Annotate

util/mercurial.lua @ 11049:f103f59ea2b5

net.http: http.request() promise now resolves with response (breaking change) Promise mode is not (widely?) used, changing this now while we can, as it improves usability of the API. The request is now available as response.request, if needed.
author Matthew Wild <mwild1@gmail.com>
date Tue, 25 Aug 2020 15:59:04 +0100
parent 10533:a6cc5b844d7b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6585
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 local lfs = require"lfs";
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 local hg = { };
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 function hg.check_id(path)
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 if lfs.attributes(path, 'mode') ~= "directory" then
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 return nil, "not a directory";
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 end
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 local hg_dirstate = io.open(path.."/.hg/dirstate");
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local hgid, hgrepo
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 if hg_dirstate then
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 hgid = ("%02x%02x%02x%02x%02x%02x"):format(hg_dirstate:read(6):byte(1, 6));
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 hg_dirstate:close();
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 local hg_changelog = io.open(path.."/.hg/store/00changelog.i");
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 if hg_changelog then
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 hg_changelog:seek("set", 0x20);
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 hgrepo = ("%02x%02x%02x%02x%02x%02x"):format(hg_changelog:read(6):byte(1, 6));
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 hg_changelog:close();
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 end
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 else
10533
a6cc5b844d7b util.mercurial: Ignore an unused error variable [luacheck]
Kim Alvefur <zash@zash.se>
parents: 6585
diff changeset
22 local hg_archival,e = io.open(path.."/.hg_archival.txt"); -- luacheck: ignore 211/e
6585
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 if hg_archival then
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 local repo = hg_archival:read("*l");
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 local node = hg_archival:read("*l");
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 hg_archival:close()
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 hgid = node and node:match("^node: (%x%x%x%x%x%x%x%x%x%x%x%x)")
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 hgrepo = repo and repo:match("^repo: (%x%x%x%x%x%x%x%x%x%x%x%x)")
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 end
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 end
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 return hgid, hgrepo;
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 end
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33
ec94dc502113 util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 return hg;