Mercurial > hg-git
annotate hggit/compat.py @ 1130:80664524802b
compat: add compatibility for 4.6 mercurial.utils
author | Sean Farley <sean@farley.io> |
---|---|
date | Thu, 24 May 2018 11:26:15 +0200 |
parents | 8ed6c0cae9b8 |
children | 8e03a8ba04af |
rev | line source |
---|---|
991
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
1 from mercurial import ( |
1104
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
2 context, |
991
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
3 url, |
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
4 util as hgutil, |
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
5 ) |
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
6 |
850
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
7 try: |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
8 from mercurial import encoding |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
9 hfsignoreclean = encoding.hfsignoreclean |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
10 except AttributeError: |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
11 # compat with hg 3.2.1 and earlier, which doesn't have |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
12 # hfsignoreclean (This was borrowed wholesale from hg 3.2.2.) |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
13 _ignore = [unichr(int(x, 16)).encode("utf-8") for x in |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
14 "200c 200d 200e 200f 202a 202b 202c 202d 202e " |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
15 "206a 206b 206c 206d 206e 206f feff".split()] |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
16 # verify the next function will work |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
17 assert set([i[0] for i in _ignore]) == set(["\xe2", "\xef"]) |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
18 |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
19 def hfsignoreclean(s): |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
20 """Remove codepoints ignored by HFS+ from s. |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
21 |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
22 >>> hfsignoreclean(u'.h\u200cg'.encode('utf-8')) |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
23 '.hg' |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
24 >>> hfsignoreclean(u'.h\ufeffg'.encode('utf-8')) |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
25 '.hg' |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
26 """ |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
27 if "\xe2" in s or "\xef" in s: |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
28 for c in _ignore: |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
29 s = s.replace(c, '') |
81c55f8629ba
hg2git: audit path components during export (CVE-2014-9390)
Augie Fackler <raf@durin42.com>
parents:
diff
changeset
|
30 return s |
991
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
31 |
1088
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
32 try: |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
33 from mercurial import vfs as vfsmod |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
34 hgvfs = vfsmod.vfs |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
35 except ImportError: |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
36 # vfsmod was extracted in hg 4.2 |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
37 from mercurial import scmutil |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
38 hgvfs = scmutil.vfs |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
39 |
1130
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
40 try: |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
41 from mercurial.utils import procutil, stringutil |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
42 sshargs = procutil.sshargs |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
43 shellquote = procutil.shellquote |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
44 quotecommand = procutil.quotecommand |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
45 binary = stringutil.binary |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
46 except ImportError: |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
47 # these were moved in 4.6 |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
48 sshargs = hgutil.sshargs |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
49 shellquote = hgutil.shellquote |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
50 quotecommand = hgutil.quotecommand |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
51 binary = hgutil.binary |
80664524802b
compat: add compatibility for 4.6 mercurial.utils
Sean Farley <sean@farley.io>
parents:
1115
diff
changeset
|
52 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1104
diff
changeset
|
53 |
1088
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
54 def gitvfs(repo): |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
55 """return a vfs suitable to read git related data""" |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
56 # Mercurial >= 3.3: repo.shared() |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
57 if repo.sharedpath != repo.path: |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
58 return hgvfs(repo.sharedpath) |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
59 else: |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
60 return repo.vfs |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
61 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1104
diff
changeset
|
62 |
1035
cfcd3032355c
compat: remove unused argument
Kevin Bullock <kbullock@ringworld.org>
parents:
1005
diff
changeset
|
63 def passwordmgr(ui): |
991
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
64 try: |
1036
da62ef0569bb
compat: fix fallback for ui.passwordmgr
Kevin Bullock <kbullock@ringworld.org>
parents:
1035
diff
changeset
|
65 realm = hgutil.urlreq.httppasswordmgrwithdefaultrealm() |
da62ef0569bb
compat: fix fallback for ui.passwordmgr
Kevin Bullock <kbullock@ringworld.org>
parents:
1035
diff
changeset
|
66 return url.passwordmgr(ui, realm) |
da62ef0569bb
compat: fix fallback for ui.passwordmgr
Kevin Bullock <kbullock@ringworld.org>
parents:
1035
diff
changeset
|
67 except (TypeError, AttributeError): |
991
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
68 # compat with hg < 3.9 |
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
69 return url.passwordmgr(ui) |
1005
31f52d62ae13
compat: add method for dulwich to return the symref
Sean Farley <sean@farley.io>
parents:
991
diff
changeset
|
70 |
1092
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
71 |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
72 try: |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
73 import dulwich.client |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
74 FetchPackResult = dulwich.client.FetchPackResult |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
75 read_pkt_refs = dulwich.client.read_pkt_refs |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
76 except (AttributeError, ImportError): |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
77 # older dulwich doesn't return the symref where remote HEAD points, so we |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
78 # monkey patch it here |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
79 from dulwich.errors import GitProtocolError |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
80 from dulwich.protocol import extract_capabilities |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
81 |
1093
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
82 class FetchPackResult(object): |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
83 """Result of a fetch-pack operation. |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
84 :var refs: Dictionary with all remote refs |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
85 :var symrefs: Dictionary with remote symrefs |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
86 :var agent: User agent string |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
87 """ |
1092
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
88 |
1093
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
89 def __init__(self, refs, symrefs, agent): |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
90 self.refs = refs |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
91 self.symrefs = symrefs |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
92 self.agent = agent |
1005
31f52d62ae13
compat: add method for dulwich to return the symref
Sean Farley <sean@farley.io>
parents:
991
diff
changeset
|
93 |
1092
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
94 def read_pkt_refs(proto): |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
95 server_capabilities = None |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
96 refs = {} |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
97 # Receive refs from server |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
98 for pkt in proto.read_pkt_seq(): |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
99 (sha, ref) = pkt.rstrip('\n').split(None, 1) |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
100 if sha == 'ERR': |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
101 raise GitProtocolError(ref) |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
102 if server_capabilities is None: |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
103 (ref, server_capabilities) = extract_capabilities(ref) |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
104 symref = 'symref=HEAD:' |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
105 for cap in server_capabilities: |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
106 if cap.startswith(symref): |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
107 sha = cap.replace(symref, '') |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
108 refs[ref] = sha |
1005
31f52d62ae13
compat: add method for dulwich to return the symref
Sean Farley <sean@farley.io>
parents:
991
diff
changeset
|
109 |
1092
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
110 if len(refs) == 0: |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
111 return None, set([]) |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
112 return refs, set(server_capabilities) |
1061
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
113 |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
114 |
1104
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
115 def memfilectx(repo, changectx, path, data, islink=False, |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
116 isexec=False, copied=None): |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
117 # Different versions of mercurial have different parameters to |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
118 # memfilectx. Try them from newest to oldest. |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
119 args_to_try = ( |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
120 (repo, changectx, path, data), # hg 4.5+ |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
121 (repo, path, data), # hg 3.1 - 4.5 |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
122 (path, data), # hg < 3.1 |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
123 ) |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
124 for args in args_to_try: |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
125 try: |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
126 return context.memfilectx(*args, |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
127 islink=islink, |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
128 isexec=isexec, |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
129 copied=copied) |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
130 except TypeError as ex: |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
131 last_ex = ex |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
132 raise last_ex |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
133 |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
134 |
1061
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
135 CONFIG_DEFAULTS = { |
1063
ae5759bf5bcd
config: register git.blockdotgit
Kevin Bullock <kbullock@ringworld.org>
parents:
1062
diff
changeset
|
136 'git': { |
1066
ddae0045de4e
config: register git.authors
Kevin Bullock <kbullock@ringworld.org>
parents:
1065
diff
changeset
|
137 'authors': None, |
1063
ae5759bf5bcd
config: register git.blockdotgit
Kevin Bullock <kbullock@ringworld.org>
parents:
1062
diff
changeset
|
138 'blockdotgit': True, |
1073
03e7c9d1fbb6
config: register git.blockdothg
Kevin Bullock <kbullock@ringworld.org>
parents:
1072
diff
changeset
|
139 'blockdothg': True, |
1065
78dc28eb4245
config: register git.branch_bookmark_suffix
Kevin Bullock <kbullock@ringworld.org>
parents:
1064
diff
changeset
|
140 'branch_bookmark_suffix': None, |
1068
914e5477b17e
config: register git.debugextrainmessage
Kevin Bullock <kbullock@ringworld.org>
parents:
1067
diff
changeset
|
141 'debugextrainmessage': False, # test only -- do not document this! |
1072
f7433379c04a
config: register git.findcopiesharder
Kevin Bullock <kbullock@ringworld.org>
parents:
1071
diff
changeset
|
142 'findcopiesharder': False, |
1064
d37336a87b70
config: register git.intree
Kevin Bullock <kbullock@ringworld.org>
parents:
1063
diff
changeset
|
143 'intree': None, |
1069
88db6948a5a8
config: register git.mindate
Kevin Bullock <kbullock@ringworld.org>
parents:
1068
diff
changeset
|
144 'mindate': None, |
1080
d96f998a718f
config: register defaults for phase-related config options
Kevin Bullock <kbullock@ringworld.org>
parents:
1073
diff
changeset
|
145 'public': list, |
1071
00baa6a2abc8
config: register git.renamelimit
Kevin Bullock <kbullock@ringworld.org>
parents:
1070
diff
changeset
|
146 'renamelimit': 400, |
1070
0b4144897f73
config: register git.similarity
Kevin Bullock <kbullock@ringworld.org>
parents:
1069
diff
changeset
|
147 'similarity': 0, |
1063
ae5759bf5bcd
config: register git.blockdotgit
Kevin Bullock <kbullock@ringworld.org>
parents:
1062
diff
changeset
|
148 }, |
1067
f4c2b42731ea
config: register hggit.mapsavefrequency
Kevin Bullock <kbullock@ringworld.org>
parents:
1066
diff
changeset
|
149 'hggit': { |
f4c2b42731ea
config: register hggit.mapsavefrequency
Kevin Bullock <kbullock@ringworld.org>
parents:
1066
diff
changeset
|
150 'mapsavefrequency': 0, |
1080
d96f998a718f
config: register defaults for phase-related config options
Kevin Bullock <kbullock@ringworld.org>
parents:
1073
diff
changeset
|
151 'usephases': False, |
1067
f4c2b42731ea
config: register hggit.mapsavefrequency
Kevin Bullock <kbullock@ringworld.org>
parents:
1066
diff
changeset
|
152 } |
1061
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
153 } |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
154 |
1062
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
155 hasconfigitems = False |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
156 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1104
diff
changeset
|
157 |
1062
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
158 def registerconfigs(configitem): |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
159 global hasconfigitems |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
160 hasconfigitems = True |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
161 for section, items in CONFIG_DEFAULTS.iteritems(): |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
162 for item, default in items.iteritems(): |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
163 configitem(section, item, default=default) |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
164 |
1115
8ed6c0cae9b8
cleanup: add some blank lines
Sean Farley <sean@farley.io>
parents:
1104
diff
changeset
|
165 |
1061
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
166 def config(ui, subtype, section, item): |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
167 if subtype == 'string': |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
168 subtype = '' |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
169 getconfig = getattr(ui, 'config' + subtype) |
1062
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
170 if hasconfigitems: |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
171 return getconfig(section, item) |
1061
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
172 return getconfig(section, item, CONFIG_DEFAULTS[section][item]) |