Mercurial > hg-git
annotate hggit/compat.py @ 1104:e326b349eba6
compat: extract function for memfilectx signature variants
author | Kevin Bullock <kbullock@ringworld.org> |
---|---|
date | Tue, 06 Feb 2018 08:45:48 -0600 |
parents | 8e61d7a29932 |
children | 8ed6c0cae9b8 |
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 |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
40 def gitvfs(repo): |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
41 """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
|
42 # Mercurial >= 3.3: repo.shared() |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
43 if repo.sharedpath != repo.path: |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
44 return hgvfs(repo.sharedpath) |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
45 else: |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
46 return repo.vfs |
c06d4656b77b
shared: fix compatibility with hg < 4.2
Kevin Bullock <kbullock@ringworld.org>
parents:
1080
diff
changeset
|
47 |
1035
cfcd3032355c
compat: remove unused argument
Kevin Bullock <kbullock@ringworld.org>
parents:
1005
diff
changeset
|
48 def passwordmgr(ui): |
991
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
49 try: |
1036
da62ef0569bb
compat: fix fallback for ui.passwordmgr
Kevin Bullock <kbullock@ringworld.org>
parents:
1035
diff
changeset
|
50 realm = hgutil.urlreq.httppasswordmgrwithdefaultrealm() |
da62ef0569bb
compat: fix fallback for ui.passwordmgr
Kevin Bullock <kbullock@ringworld.org>
parents:
1035
diff
changeset
|
51 return url.passwordmgr(ui, realm) |
da62ef0569bb
compat: fix fallback for ui.passwordmgr
Kevin Bullock <kbullock@ringworld.org>
parents:
1035
diff
changeset
|
52 except (TypeError, AttributeError): |
991
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
53 # compat with hg < 3.9 |
92d7702c19da
compat: add method for backwards compatible passwordmgr
Sean Farley <sean@farley.io>
parents:
850
diff
changeset
|
54 return url.passwordmgr(ui) |
1005
31f52d62ae13
compat: add method for dulwich to return the symref
Sean Farley <sean@farley.io>
parents:
991
diff
changeset
|
55 |
1092
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
56 |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
57 try: |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
58 import dulwich.client |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
59 FetchPackResult = dulwich.client.FetchPackResult |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
60 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
|
61 except (AttributeError, ImportError): |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
62 # 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
|
63 # monkey patch it here |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
64 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
|
65 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
|
66 |
1093
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
67 class FetchPackResult(object): |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
68 """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
|
69 :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
|
70 :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
|
71 :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
|
72 """ |
1092
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
73 |
1093
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
74 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
|
75 self.refs = refs |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
76 self.symrefs = symrefs |
8e61d7a29932
compat: add a stub FetchPackResult class for use with older dulwich
Sean Farley <sean@farley.io>
parents:
1092
diff
changeset
|
77 self.agent = agent |
1005
31f52d62ae13
compat: add method for dulwich to return the symref
Sean Farley <sean@farley.io>
parents:
991
diff
changeset
|
78 |
1092
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
79 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
|
80 server_capabilities = None |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
81 refs = {} |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
82 # Receive refs from server |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
83 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
|
84 (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
|
85 if sha == 'ERR': |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
86 raise GitProtocolError(ref) |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
87 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
|
88 (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
|
89 symref = 'symref=HEAD:' |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
90 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
|
91 if cap.startswith(symref): |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
92 sha = cap.replace(symref, '') |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
93 refs[ref] = sha |
1005
31f52d62ae13
compat: add method for dulwich to return the symref
Sean Farley <sean@farley.io>
parents:
991
diff
changeset
|
94 |
1092
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
95 if len(refs) == 0: |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
96 return None, set([]) |
3799bf885c1d
compat: use newer read_pkt_refs from dulwich if possible
Sean Farley <sean@farley.io>
parents:
1088
diff
changeset
|
97 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
|
98 |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
99 |
1104
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
100 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
|
101 isexec=False, copied=None): |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
102 # 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
|
103 # memfilectx. Try them from newest to oldest. |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
104 args_to_try = ( |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
105 (repo, changectx, path, data), # hg 4.5+ |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
106 (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
|
107 (path, data), # hg < 3.1 |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
108 ) |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
109 for args in args_to_try: |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
110 try: |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
111 return context.memfilectx(*args, |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
112 islink=islink, |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
113 isexec=isexec, |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
114 copied=copied) |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
115 except TypeError as ex: |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
116 last_ex = ex |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
117 raise last_ex |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
118 |
e326b349eba6
compat: extract function for memfilectx signature variants
Kevin Bullock <kbullock@ringworld.org>
parents:
1093
diff
changeset
|
119 |
1061
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
120 CONFIG_DEFAULTS = { |
1063
ae5759bf5bcd
config: register git.blockdotgit
Kevin Bullock <kbullock@ringworld.org>
parents:
1062
diff
changeset
|
121 'git': { |
1066
ddae0045de4e
config: register git.authors
Kevin Bullock <kbullock@ringworld.org>
parents:
1065
diff
changeset
|
122 'authors': None, |
1063
ae5759bf5bcd
config: register git.blockdotgit
Kevin Bullock <kbullock@ringworld.org>
parents:
1062
diff
changeset
|
123 'blockdotgit': True, |
1073
03e7c9d1fbb6
config: register git.blockdothg
Kevin Bullock <kbullock@ringworld.org>
parents:
1072
diff
changeset
|
124 'blockdothg': True, |
1065
78dc28eb4245
config: register git.branch_bookmark_suffix
Kevin Bullock <kbullock@ringworld.org>
parents:
1064
diff
changeset
|
125 'branch_bookmark_suffix': None, |
1068
914e5477b17e
config: register git.debugextrainmessage
Kevin Bullock <kbullock@ringworld.org>
parents:
1067
diff
changeset
|
126 'debugextrainmessage': False, # test only -- do not document this! |
1072
f7433379c04a
config: register git.findcopiesharder
Kevin Bullock <kbullock@ringworld.org>
parents:
1071
diff
changeset
|
127 'findcopiesharder': False, |
1064
d37336a87b70
config: register git.intree
Kevin Bullock <kbullock@ringworld.org>
parents:
1063
diff
changeset
|
128 'intree': None, |
1069
88db6948a5a8
config: register git.mindate
Kevin Bullock <kbullock@ringworld.org>
parents:
1068
diff
changeset
|
129 'mindate': None, |
1080
d96f998a718f
config: register defaults for phase-related config options
Kevin Bullock <kbullock@ringworld.org>
parents:
1073
diff
changeset
|
130 'public': list, |
1071
00baa6a2abc8
config: register git.renamelimit
Kevin Bullock <kbullock@ringworld.org>
parents:
1070
diff
changeset
|
131 'renamelimit': 400, |
1070
0b4144897f73
config: register git.similarity
Kevin Bullock <kbullock@ringworld.org>
parents:
1069
diff
changeset
|
132 'similarity': 0, |
1063
ae5759bf5bcd
config: register git.blockdotgit
Kevin Bullock <kbullock@ringworld.org>
parents:
1062
diff
changeset
|
133 }, |
1067
f4c2b42731ea
config: register hggit.mapsavefrequency
Kevin Bullock <kbullock@ringworld.org>
parents:
1066
diff
changeset
|
134 'hggit': { |
f4c2b42731ea
config: register hggit.mapsavefrequency
Kevin Bullock <kbullock@ringworld.org>
parents:
1066
diff
changeset
|
135 'mapsavefrequency': 0, |
1080
d96f998a718f
config: register defaults for phase-related config options
Kevin Bullock <kbullock@ringworld.org>
parents:
1073
diff
changeset
|
136 'usephases': False, |
1067
f4c2b42731ea
config: register hggit.mapsavefrequency
Kevin Bullock <kbullock@ringworld.org>
parents:
1066
diff
changeset
|
137 } |
1061
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
138 } |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
139 |
1062
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
140 hasconfigitems = False |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
141 |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
142 def registerconfigs(configitem): |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
143 global hasconfigitems |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
144 hasconfigitems = True |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
145 for section, items in CONFIG_DEFAULTS.iteritems(): |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
146 for item, default in items.iteritems(): |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
147 configitem(section, item, default=default) |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
148 |
1061
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
149 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
|
150 if subtype == 'string': |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
151 subtype = '' |
a2eccdeed26d
config: provide a central place to define and access defaults
Kevin Bullock <kbullock@ringworld.org>
parents:
1036
diff
changeset
|
152 getconfig = getattr(ui, 'config' + subtype) |
1062
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
153 if hasconfigitems: |
c249de74742b
compat: use config registrar if available
Kevin Bullock <kbullock@ringworld.org>
parents:
1061
diff
changeset
|
154 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
|
155 return getconfig(section, item, CONFIG_DEFAULTS[section][item]) |