Annotate

util/mercurial.lua @ 12471:a3b12eeedd4b

mod_smacks: Improve activation of smacks on outgoing s2s Using a timer was a hack to get around that stream features are not available at the right time and sendq stanzas were stored as strings so could not be counted properly. The later has now been fixed and the former is fixed by recording the relevant stream feature on the session so that the correct version of XEP-0198 can be activated once the connection has been authenticated and is ready to start.
author Kim Alvefur <zash@zash.se>
date Sun, 24 Apr 2022 16:17:32 +0200
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;