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 | 0cbc9ecbecd3caf2bab74dd77abab53ca77691f6 (patch) | |
tree | e4fca8b30e86975bf10ef581f281c91603e7eed8 /util | |
parent | c166ec17c2c8bf911877b5810de2555a50afe3ef (diff) | |
parent | 45e1b4d1da5e5c9825e23368d8de92c4c5c390de (diff) | |
download | prosody-0cbc9ecbecd3caf2bab74dd77abab53ca77691f6.tar.gz prosody-0cbc9ecbecd3caf2bab74dd77abab53ca77691f6.zip |
Merge 0.10->trunk
Diffstat (limited to 'util')
-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; |