blob: 0f2b1d046f1b97114c94342336cd84f3d1f8e237 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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"); -- luacheck: ignore 211/e
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;
|