diff options
author | Matthew Wild <mwild1@gmail.com> | 2015-03-24 13:41:18 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2015-03-24 13:41:18 +0000 |
commit | 829b01aba17e13d75c13679fe6343171378e25d9 (patch) | |
tree | e4fca8b30e86975bf10ef581f281c91603e7eed8 /util/mercurial.lua | |
parent | f7786f4031dad5dd2daaf92c7c099448334d892d (diff) | |
parent | 13edf3e093fd656d5110b277eca4c9805f3d925c (diff) | |
download | prosody-829b01aba17e13d75c13679fe6343171378e25d9.tar.gz prosody-829b01aba17e13d75c13679fe6343171378e25d9.zip |
Merge 0.10->trunk
Diffstat (limited to 'util/mercurial.lua')
-rw-r--r-- | util/mercurial.lua | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/util/mercurial.lua b/util/mercurial.lua new file mode 100644 index 00000000..3f75c4c1 --- /dev/null +++ b/util/mercurial.lua @@ -0,0 +1,34 @@ + +local lfs = require"lfs"; + +local hg = { }; + +function hg.check_id(path) + if lfs.attributes(path, 'mode') ~= "directory" then + return nil, "not a directory"; + end + local hg_dirstate = io.open(path.."/.hg/dirstate"); + local hgid, hgrepo + if hg_dirstate then + hgid = ("%02x%02x%02x%02x%02x%02x"):format(hg_dirstate:read(6):byte(1, 6)); + hg_dirstate:close(); + local hg_changelog = io.open(path.."/.hg/store/00changelog.i"); + if hg_changelog then + hg_changelog:seek("set", 0x20); + hgrepo = ("%02x%02x%02x%02x%02x%02x"):format(hg_changelog:read(6):byte(1, 6)); + hg_changelog:close(); + end + else + local hg_archival,e = io.open(path.."/.hg_archival.txt"); + if hg_archival then + local repo = hg_archival:read("*l"); + local node = hg_archival:read("*l"); + hg_archival:close() + hgid = node and node:match("^node: (%x%x%x%x%x%x%x%x%x%x%x%x)") + hgrepo = repo and repo:match("^repo: (%x%x%x%x%x%x%x%x%x%x%x%x)") + end + end + return hgid, hgrepo; +end + +return hg; |