Software /
code /
prosody
Annotate
util/mercurial.lua @ 11539:3413fea9e6db 0.11
util.startup: Set more aggressive defaults for GC
Testing has demonstrated that the default GC parameters are not
sufficient to prevent runaway memory growth when running under Lua 5.2
and Lua 5.3.
Setting the GC speed to 500 was tested on Lua versions 5.1->5.4 and did
not display unbounded memory growth.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 07 May 2021 16:41:39 +0100 (2021-05-07) |
parent | 6585:ec94dc502113 |
child | 10533:a6cc5b844d7b |
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 |
ec94dc502113
util.mercurial: Utility functions for Mercurial repositories
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
22 local hg_archival,e = io.open(path.."/.hg_archival.txt"); |
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; |