Mercurial > hgsubversion
annotate hgsubversion/__init__.py @ 1506:332e803044e5
commands: fix registrar check
'util' in hgsubversion is a different type from hgutil, which is the one from
core hg. This was hidden by the fallback logic, but I'm not sure why it didn't
cause errors in the tests. Maybe I ran the original tests against an older hg.
This time I've ensured the tests pass against the latest version of hg.
author | Durham Goode <durham@fb.com> |
---|---|
date | Tue, 23 May 2017 11:08:42 -0700 |
parents | 6f2c7b5940f6 |
children | 6d0fe7ce9898 |
rev | line source |
---|---|
185
57355b0e7bd1
Creating patch for documention messages.
Dan Villiom Podlaski Christiansen <danchr@cs.au.dk>
parents:
179
diff
changeset
|
1 '''integration with Subversion repositories |
57355b0e7bd1
Creating patch for documention messages.
Dan Villiom Podlaski Christiansen <danchr@cs.au.dk>
parents:
179
diff
changeset
|
2 |
332
56d877e6ccbb
__init__: rewrite extension docstring to be slightly less hostile.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
331
diff
changeset
|
3 hgsubversion is an extension for Mercurial that allows it to act as a Subversion |
56d877e6ccbb
__init__: rewrite extension docstring to be slightly less hostile.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
331
diff
changeset
|
4 client, offering fast, incremental and bidirectional synchronisation. |
185
57355b0e7bd1
Creating patch for documention messages.
Dan Villiom Podlaski Christiansen <danchr@cs.au.dk>
parents:
179
diff
changeset
|
5 |
524
30e885106dab
__init__: update docstring to reflect recent change to README
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
507
diff
changeset
|
6 At this point, hgsubversion is usable by users reasonably familiar with |
30e885106dab
__init__: update docstring to reflect recent change to README
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
507
diff
changeset
|
7 Mercurial as a VCS. It's not recommended to dive into hgsubversion as an |
30e885106dab
__init__: update docstring to reflect recent change to README
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
507
diff
changeset
|
8 introduction to Mercurial, since hgsubversion "bends the rules" a little |
30e885106dab
__init__: update docstring to reflect recent change to README
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
507
diff
changeset
|
9 and violates some of the typical assumptions of early Mercurial users. |
185
57355b0e7bd1
Creating patch for documention messages.
Dan Villiom Podlaski Christiansen <danchr@cs.au.dk>
parents:
179
diff
changeset
|
10 |
332
56d877e6ccbb
__init__: rewrite extension docstring to be slightly less hostile.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
331
diff
changeset
|
11 Before using hgsubversion, we *strongly* encourage running the |
428
96b4ae475941
Fix syntax highlighting in emacs.
Augie Fackler <durin42@gmail.com>
parents:
404
diff
changeset
|
12 automated tests. See 'README' in the hgsubversion directory for |
185
57355b0e7bd1
Creating patch for documention messages.
Dan Villiom Podlaski Christiansen <danchr@cs.au.dk>
parents:
179
diff
changeset
|
13 details. |
332
56d877e6ccbb
__init__: rewrite extension docstring to be slightly less hostile.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
331
diff
changeset
|
14 |
660
67b54cb38843
__init__: activate & advertise the new help topic.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
651
diff
changeset
|
15 For more information and instructions, see :hg:`help subversion`. |
185
57355b0e7bd1
Creating patch for documention messages.
Dan Villiom Podlaski Christiansen <danchr@cs.au.dk>
parents:
179
diff
changeset
|
16 ''' |
57355b0e7bd1
Creating patch for documention messages.
Dan Villiom Podlaski Christiansen <danchr@cs.au.dk>
parents:
179
diff
changeset
|
17 |
1408 | 18 testedwith = '2.8.2 3.0.1 3.1 3.2.2 3.3 3.4 3.5 3.6 3.7 3.8' |
1304
c1756971f882
__init__: record the versions of Mercurial hgsubversion supports
Augie Fackler <raf@durin42.com>
parents:
1247
diff
changeset
|
19 |
52
fb1d911bb0be
svnclone now updates to the tip revision if it is the initial clone.
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
20 import os |
251
23b02f892d9b
Fix up imports in __init__.py.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
248
diff
changeset
|
21 import sys |
23b02f892d9b
Fix up imports in __init__.py.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
248
diff
changeset
|
22 import traceback |
52
fb1d911bb0be
svnclone now updates to the tip revision if it is the initial clone.
Augie Fackler <durin42@gmail.com>
parents:
0
diff
changeset
|
23 |
0
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
24 from mercurial import commands |
1246
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
25 try: |
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
26 from mercurial import exchange |
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
27 exchange.push # existed in first iteration of this file |
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
28 except ImportError: |
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
29 # We only *use* the exchange module in hg 3.2+, so this is safe |
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
30 pass |
256
7932d098cb5f
Refactor commands to wrap their hg equivalent adding a --svn flag where sane.
Augie Fackler <durin42@gmail.com>
parents:
253
diff
changeset
|
31 from mercurial import extensions |
660
67b54cb38843
__init__: activate & advertise the new help topic.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
651
diff
changeset
|
32 from mercurial import help |
326
33736e2e25f0
alternate approach for supporting svn schemes for repository paths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
304
diff
changeset
|
33 from mercurial import hg |
1246
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
34 from mercurial import localrepo |
248
a9134fa28d15
Move svncommand code into __init__.py.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
247
diff
changeset
|
35 from mercurial import util as hgutil |
429
a5a475dced59
blacklist svn for demandimport.
Augie Fackler <durin42@gmail.com>
parents:
428
diff
changeset
|
36 from mercurial import demandimport |
471
893e40e97f6c
Bypass demandimport for all svn submodules
Patrick Mezard <pmezard@gmail.com>
parents:
469
diff
changeset
|
37 demandimport.ignore.extend([ |
893e40e97f6c
Bypass demandimport for all svn submodules
Patrick Mezard <pmezard@gmail.com>
parents:
469
diff
changeset
|
38 'svn', |
893e40e97f6c
Bypass demandimport for all svn submodules
Patrick Mezard <pmezard@gmail.com>
parents:
469
diff
changeset
|
39 'svn.client', |
893e40e97f6c
Bypass demandimport for all svn submodules
Patrick Mezard <pmezard@gmail.com>
parents:
469
diff
changeset
|
40 'svn.core', |
893e40e97f6c
Bypass demandimport for all svn submodules
Patrick Mezard <pmezard@gmail.com>
parents:
469
diff
changeset
|
41 'svn.delta', |
893e40e97f6c
Bypass demandimport for all svn submodules
Patrick Mezard <pmezard@gmail.com>
parents:
469
diff
changeset
|
42 'svn.ra', |
893e40e97f6c
Bypass demandimport for all svn submodules
Patrick Mezard <pmezard@gmail.com>
parents:
469
diff
changeset
|
43 ]) |
209
d06572495c5e
Better error message when we encounter an unknown SSL cert.
Augie Fackler <durin42@gmail.com>
parents:
199
diff
changeset
|
44 |
1112
0c2eef372483
init: remove pre-1.6 revset code
Sean Farley <sean.michael.farley@gmail.com>
parents:
1111
diff
changeset
|
45 from mercurial import revset |
1113
c8aa5616eec5
init: remove pre-1.7 subrepo code
Sean Farley <sean.michael.farley@gmail.com>
parents:
1112
diff
changeset
|
46 from mercurial import subrepo |
762
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
753
diff
changeset
|
47 |
241
4950b18cf949
Move fetch_command.fetch_revisions() to svncommands.pull().
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
234
diff
changeset
|
48 import svncommands |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
429
diff
changeset
|
49 import util |
328
48ec2d62dc29
Rename tag_repo.py to svnrepo.py and get rid of the 'fake' tags.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
326
diff
changeset
|
50 import svnrepo |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
256
diff
changeset
|
51 import wrappers |
762
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
753
diff
changeset
|
52 import svnexternals |
1406
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
53 import compathacks |
331
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
329
diff
changeset
|
54 |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
55 svnopts = [ |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
56 ('', 'stupid', None, |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
57 'use slower, but more compatible, protocol for Subversion'), |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
58 ] |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
59 |
506
b5f24dd948af
__init__: document wrapping commands more clearly
Augie Fackler <durin42@gmail.com>
parents:
505
diff
changeset
|
60 # generic means it picks up all options from svnopts |
b5f24dd948af
__init__: document wrapping commands more clearly
Augie Fackler <durin42@gmail.com>
parents:
505
diff
changeset
|
61 # fixdoc means update the docstring |
b5f24dd948af
__init__: document wrapping commands more clearly
Augie Fackler <durin42@gmail.com>
parents:
505
diff
changeset
|
62 # TODO: fixdoc hoses l18n |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
63 wrapcmds = { # cmd: generic, target, fixdoc, ppopts, opts |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
64 'parents': (False, None, False, False, [ |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
65 ('', 'svn', None, 'show parent svn revision instead'), |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
66 ]), |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
67 'diff': (False, None, False, False, [ |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
68 ('', 'svn', None, 'show svn diffs against svn parent'), |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
69 ]), |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
70 'pull': (True, 'sources', True, True, []), |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
71 'push': (True, 'destinations', True, True, []), |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
72 'incoming': (False, 'sources', True, True, []), |
507
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
506
diff
changeset
|
73 'version': (False, None, False, False, [ |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
506
diff
changeset
|
74 ('', 'svn', None, 'print hgsubversion information as well')]), |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
75 'clone': (False, 'sources', True, True, [ |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
76 ('T', 'tagpaths', '', |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
77 'list of paths to search for tags in Subversion repositories'), |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1009
diff
changeset
|
78 ('', 'branchdir', '', |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1009
diff
changeset
|
79 'path to search for branches in subversion repositories'), |
1319
43a365f5d13c
Allow changing the path to the trunk
Francois Dinel <fdinel@gmail.com>
parents:
1304
diff
changeset
|
80 ('', 'trunkdir', '', |
43a365f5d13c
Allow changing the path to the trunk
Francois Dinel <fdinel@gmail.com>
parents:
1304
diff
changeset
|
81 'path to trunk in subversion repositories'), |
1094
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
82 ('', 'infix', '', |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
83 'path relative to trunk, branch an tag dirs to import'), |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
84 ('A', 'authors', '', |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
85 'file mapping Subversion usernames to Mercurial authors'), |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
86 ('', 'filemap', '', |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
87 'file containing rules for remapping Subversion repository paths'), |
499
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
471
diff
changeset
|
88 ('', 'layout', 'auto', ('import standard layout or single ' |
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
471
diff
changeset
|
89 'directory? Can be standard, single, or auto.')), |
574
8e025a6f0db4
add basic branchmap functionality, to rename branches
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
573
diff
changeset
|
90 ('', 'branchmap', '', 'file containing rules for branch conversion'), |
729 | 91 ('', 'tagmap', '', 'file containing rules for renaming tags'), |
651
827547493112
clone: allow specifying a start revision.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
618
diff
changeset
|
92 ('', 'startrev', '', ('convert Subversion revisions starting at the one ' |
827547493112
clone: allow specifying a start revision.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
618
diff
changeset
|
93 'specified, either an integer revision or HEAD; ' |
827547493112
clone: allow specifying a start revision.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
618
diff
changeset
|
94 'HEAD causes only the latest revision to be ' |
827547493112
clone: allow specifying a start revision.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
618
diff
changeset
|
95 'pulled')), |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
96 ]), |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
97 } |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
98 |
618
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
99 try: |
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
100 from mercurial import discovery |
805
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
101 def findcommonoutgoing(orig, *args, **opts): |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
102 capable = getattr(args[1], 'capable', lambda x: False) |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
103 if capable('subversion'): |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
104 return wrappers.findcommonoutgoing(*args, **opts) |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
105 else: |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
106 return orig(*args, **opts) |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
107 extensions.wrapfunction(discovery, 'findcommonoutgoing', findcommonoutgoing) |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
108 except AttributeError: |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
109 # only need the discovery variant of this code when we drop hg < 1.6 |
618
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
110 def findoutgoing(orig, *args, **opts): |
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
111 capable = getattr(args[1], 'capable', lambda x: False) |
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
112 if capable('subversion'): |
805
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
800
diff
changeset
|
113 return wrappers.findoutgoing(*args, **opts) |
618
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
114 else: |
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
115 return orig(*args, **opts) |
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
116 extensions.wrapfunction(discovery, 'findoutgoing', findoutgoing) |
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
117 except ImportError: |
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
118 pass |
82bfc96a1311
svnrepo: support new discovery module introduced in 3d0591a66118
Augie Fackler <durin42@gmail.com>
parents:
599
diff
changeset
|
119 |
1109
48935ea2090f
init: remove pre-1.3 code from extsetup
Sean Farley <sean.michael.farley@gmail.com>
parents:
1094
diff
changeset
|
120 def extsetup(ui): |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
121 """insert command wrappers for a bunch of commands""" |
753
b218d2bb8c45
rename our uisetup initialization method into extsetup
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
729
diff
changeset
|
122 |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
384
diff
changeset
|
123 docvals = {'extension': 'hgsubversion'} |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
124 for cmd, (generic, target, fixdoc, ppopts, opts) in wrapcmds.iteritems(): |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
125 |
504
bc117ea4c95a
do not assume that doc-strings are present.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
503
diff
changeset
|
126 if fixdoc and wrappers.generic.__doc__: |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
127 docvals['command'] = cmd |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
128 docvals['Command'] = cmd.capitalize() |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
129 docvals['target'] = target |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
130 doc = wrappers.generic.__doc__.strip() % docvals |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
131 fn = getattr(commands, cmd) |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
132 fn.__doc__ = fn.__doc__.rstrip() + '\n\n ' + doc |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
133 |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
134 wrapped = generic and wrappers.generic or getattr(wrappers, cmd) |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
135 entry = extensions.wrapcommand(commands.table, cmd, wrapped) |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
136 if ppopts: |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
137 entry[1].extend(svnopts) |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
138 if opts: |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
139 entry[1].extend(opts) |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
332
diff
changeset
|
140 |
264
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
141 try: |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
142 rebase = extensions.find('rebase') |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
143 if not rebase: |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
144 return |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
145 entry = extensions.wrapcommand(rebase.cmdtable, 'rebase', wrappers.rebase) |
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
146 entry[1].append(('', 'svn', None, 'automatic svn rebase')) |
264
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
147 except: |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
148 pass |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
149 |
1246
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
150 if not hgutil.safehasattr(localrepo.localrepository, 'push'): |
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
151 # Mercurial >= 3.2 |
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
152 extensions.wrapfunction(exchange, 'push', wrappers.exchangepush) |
1247
3a4d74823187
pull: wrap exchange.pull if localrepository.pull isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1246
diff
changeset
|
153 if not hgutil.safehasattr(localrepo.localrepository, 'pull'): |
3a4d74823187
pull: wrap exchange.pull if localrepository.pull isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1246
diff
changeset
|
154 # Mercurial >= 3.2 |
3a4d74823187
pull: wrap exchange.pull if localrepository.pull isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1246
diff
changeset
|
155 extensions.wrapfunction(exchange, 'pull', wrappers.exchangepull) |
1246
2179747e7fea
push: wrap exchange.push when localrepository.push isn't available
Siddharth Agarwal <sid0@fb.com>
parents:
1113
diff
changeset
|
156 |
660
67b54cb38843
__init__: activate & advertise the new help topic.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
651
diff
changeset
|
157 helpdir = os.path.join(os.path.dirname(__file__), 'help') |
115
ed42f6e5705a
Clean up help text, document subcommands.
Luke Opperman <luke@loppear.com>
parents:
52
diff
changeset
|
158 |
660
67b54cb38843
__init__: activate & advertise the new help topic.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
651
diff
changeset
|
159 entries = ( |
67b54cb38843
__init__: activate & advertise the new help topic.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
651
diff
changeset
|
160 (['subversion'], |
67b54cb38843
__init__: activate & advertise the new help topic.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
651
diff
changeset
|
161 "Working with Subversion Repositories", |
1357
44895e2abff2
help: ignore argument passed to doc loader
Yuya Nishihara <yuya@tcha.org>
parents:
1334
diff
changeset
|
162 # Mercurial >= 3.6: doc(ui) |
44895e2abff2
help: ignore argument passed to doc loader
Yuya Nishihara <yuya@tcha.org>
parents:
1334
diff
changeset
|
163 lambda *args: open(os.path.join(helpdir, 'subversion.rst')).read()), |
660
67b54cb38843
__init__: activate & advertise the new help topic.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
651
diff
changeset
|
164 ) |
67b54cb38843
__init__: activate & advertise the new help topic.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
651
diff
changeset
|
165 |
1111
815e5cbc7ea7
init: remove pre-1.6 code from extsetup
Sean Farley <sean.michael.farley@gmail.com>
parents:
1110
diff
changeset
|
166 help.helptable.extend(entries) |
185
57355b0e7bd1
Creating patch for documention messages.
Dan Villiom Podlaski Christiansen <danchr@cs.au.dk>
parents:
179
diff
changeset
|
167 |
1112
0c2eef372483
init: remove pre-1.6 revset code
Sean Farley <sean.michael.farley@gmail.com>
parents:
1111
diff
changeset
|
168 revset.symbols.update(util.revsets) |
722
aa24148a7454
uisetup: add fromsvn() and svnrev() revsets.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
707
diff
changeset
|
169 |
1113
c8aa5616eec5
init: remove pre-1.7 subrepo code
Sean Farley <sean.michael.farley@gmail.com>
parents:
1112
diff
changeset
|
170 subrepo.types['hgsubversion'] = svnexternals.svnsubrepo |
762
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
753
diff
changeset
|
171 |
326
33736e2e25f0
alternate approach for supporting svn schemes for repository paths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
304
diff
changeset
|
172 def reposetup(ui, repo): |
33736e2e25f0
alternate approach for supporting svn schemes for repository paths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
304
diff
changeset
|
173 if repo.local(): |
800
baa9851204e7
Fix code indentation
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
763
diff
changeset
|
174 svnrepo.generate_repo_class(ui, repo) |
849
4e43e30e3e7d
Support non-standard tunnels
Will Wykeham <will@wykeham.net>
parents:
805
diff
changeset
|
175 for tunnel in ui.configlist('hgsubversion', 'tunnels'): |
4e43e30e3e7d
Support non-standard tunnels
Will Wykeham <will@wykeham.net>
parents:
805
diff
changeset
|
176 hg.schemes['svn+' + tunnel] = svnrepo |
0
f2636cfed115
Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
177 |
1112
0c2eef372483
init: remove pre-1.6 revset code
Sean Farley <sean.michael.farley@gmail.com>
parents:
1111
diff
changeset
|
178 if ui.configbool('hgsubversion', 'nativerevs'): |
1009
f0bde4bf1f78
revsets: add support for 'r123' revision labels
Matt Mackall <mpm@selenic.com>
parents:
918
diff
changeset
|
179 extensions.wrapfunction(revset, 'stringset', util.revset_stringset) |
1334
9a78a6524f9d
native revs: Match changes in core to fix native revs
Laurent Charignon <lcharignon@fb.com>
parents:
1319
diff
changeset
|
180 revset.symbols['stringset'] = revset.stringset |
9a78a6524f9d
native revs: Match changes in core to fix native revs
Laurent Charignon <lcharignon@fb.com>
parents:
1319
diff
changeset
|
181 revset.methods['string'] = revset.stringset |
9a78a6524f9d
native revs: Match changes in core to fix native revs
Laurent Charignon <lcharignon@fb.com>
parents:
1319
diff
changeset
|
182 revset.methods['symbol'] = revset.stringset |
1009
f0bde4bf1f78
revsets: add support for 'r123' revision labels
Matt Mackall <mpm@selenic.com>
parents:
918
diff
changeset
|
183 |
505
e508a718779c
fallback to the previous scheme for file repositories.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
504
diff
changeset
|
184 _old_local = hg.schemes['file'] |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
185 def _lookup(url): |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
429
diff
changeset
|
186 if util.islocalrepo(url): |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
187 return svnrepo |
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
188 else: |
505
e508a718779c
fallback to the previous scheme for file repositories.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
504
diff
changeset
|
189 return _old_local(url) |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
190 |
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
191 # install scheme handlers |
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
192 hg.schemes.update({ 'file': _lookup, 'http': svnrepo, 'https': svnrepo, |
469
5567af673f83
Revive svn+http(s) URLs support (issue94)
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
193 'svn': svnrepo, 'svn+ssh': svnrepo, 'svn+http': svnrepo, |
5567af673f83
Revive svn+http(s) URLs support (issue94)
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
194 'svn+https': svnrepo}) |
142
42958d9de864
documentation update
Alexander Solovyov <piranha@piranha.org.ua>
parents:
140
diff
changeset
|
195 |
1377
2ae4fb5bfab9
svncommands: cope with aa73d6a5d9ea which removed optionalrepo
Augie Fackler <raf@durin42.com>
parents:
1370
diff
changeset
|
196 if hgutil.safehasattr(commands, 'optionalrepo'): |
2ae4fb5bfab9
svncommands: cope with aa73d6a5d9ea which removed optionalrepo
Augie Fackler <raf@durin42.com>
parents:
1370
diff
changeset
|
197 commands.optionalrepo += ' svn' |
573
00393e9abff8
svncommands: make repo optional (useful for things like listauthors)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
524
diff
changeset
|
198 |
1505
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
199 svnopts = [ |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
200 ('u', 'svn-url', '', 'path to the Subversion server.'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
201 ('', 'stupid', False, 'be stupid and use diffy replay.'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
202 ('A', 'authors', '', 'username mapping filename'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
203 ('', 'filemap', '', |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
204 'remap file to exclude paths or include only certain paths'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
205 ('', 'force', False, 'force an operation to happen'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
206 ('', 'username', '', 'username for authentication'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
207 ('', 'password', '', 'password for authentication'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
208 ('r', 'rev', '', 'Mercurial revision'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
209 ('', 'unsafe-skip-uuid-check', False, |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
210 'skip repository uuid check in rebuildmeta'), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
211 ] |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
212 svnusage = 'hg svn <subcommand> ...' |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
213 |
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
214 # only these methods are public |
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
215 __all__ = ('cmdtable', 'reposetup', 'uisetup') |
1403
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
216 |
1505
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
217 # set up commands and templatekeywords (written this way to maintain backwards |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
218 # compatibility until we drop support for 3.7 for templatekeywords and 4.3 for |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
219 # commands) |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
220 cmdtable = { |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
221 "svn": (svncommands.svn, svnopts, svnusage), |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
222 } |
1406
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
223 try: |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
224 from mercurial import registrar |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
225 templatekeyword = registrar.templatekeyword() |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
226 loadkeyword = lambda registrarobj: None # no-op |
1505
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
227 |
1506
332e803044e5
commands: fix registrar check
Durham Goode <durham@fb.com>
parents:
1505
diff
changeset
|
228 if hgutil.safehasattr(registrar, 'command'): |
1505
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
229 cmdtable = {} |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
230 command = registrar.command(cmdtable) |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
231 @command('svn', svnopts, svnusage) |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
232 def svncommand(*args, **kwargs): |
6f2c7b5940f6
commands: update to work with new registrar.commands()
Durham Goode <durham@fb.com>
parents:
1479
diff
changeset
|
233 return svncommands.svn(*args, **kwargs) |
1406
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
234 except (ImportError, AttributeError): |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
235 # registrar.templatekeyword isn't available = loading by old hg |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
236 |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
237 templatekeyword = compathacks._funcregistrarbase() |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
238 templatekeyword._docformat = ":%s: %s" |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
239 |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
240 # minimum copy from templatekw.loadkeyword |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
241 def loadkeyword(registrarobj): |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
242 from mercurial import templatekw |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
243 for name, func in registrarobj._table.iteritems(): |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
244 templatekw.keywords[name] = func |
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
245 |
1403
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
246 def _templatehelper(ctx, kw): |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
247 ''' |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
248 Helper function for displaying information about converted changesets. |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
249 ''' |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
250 convertinfo = util.getsvnrev(ctx, '') |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
251 |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
252 if not convertinfo or not convertinfo.startswith('svn:'): |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
253 return '' |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
254 |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
255 if kw == 'svnuuid': |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
256 return convertinfo[4:40] |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
257 elif kw == 'svnpath': |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
258 return convertinfo[40:].rsplit('@', 1)[0] |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
259 elif kw == 'svnrev': |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
260 return convertinfo[40:].rsplit('@', 1)[-1] |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
261 else: |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
262 raise hgutil.Abort('unrecognized hgsubversion keyword %s' % kw) |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
263 |
1406
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
264 @templatekeyword('svnrev') |
1403
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
265 def svnrevkw(**args): |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
266 """:svnrev: String. Converted subversion revision number.""" |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
267 return _templatehelper(args['ctx'], 'svnrev') |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
268 |
1406
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
269 @templatekeyword('svnpath') |
1403
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
270 def svnpathkw(**args): |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
271 """:svnpath: String. Converted subversion revision project path.""" |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
272 return _templatehelper(args['ctx'], 'svnpath') |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
273 |
1406
ae4bdba90e7b
templatekw: use decorator to register keywords
Sean Farley <sean@farley.io>
parents:
1403
diff
changeset
|
274 @templatekeyword('svnuuid') |
1403
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
275 def svnuuidkw(**args): |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
276 """:svnuuid: String. Converted subversion revision repository identifier.""" |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
277 return _templatehelper(args['ctx'], 'svnuuid') |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
278 |
1479
f9e8c7662f8d
templatekeywords: add missing loadkeyword() call
Augie Fackler <raf@durin42.com>
parents:
1408
diff
changeset
|
279 loadkeyword(templatekeyword) |
f9e8c7662f8d
templatekeywords: add missing loadkeyword() call
Augie Fackler <raf@durin42.com>
parents:
1408
diff
changeset
|
280 |
1403
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
281 def listsvnkeys(repo): |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
282 keys = {} |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
283 repo = repo.local() |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
284 metadir = os.path.join(repo.path, 'svn') |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
285 |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
286 if util.subversionmetaexists(repo.path): |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
287 w = repo.wlock() |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
288 try: |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
289 for key in util.pushkeyfiles: |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
290 fullpath = os.path.join(metadir, key) |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
291 if os.path.isfile(fullpath): |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
292 data = open(fullpath).read() |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
293 |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
294 # Some of the files could be large, but also quite compressible |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
295 keys[key] = base85.b85encode(zlib.compress(data)) |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
296 finally: |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
297 w.release() |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
298 |
2f98d1e85c23
templatekw: move to __init__ to prepare for newer mercurial
Sean Farley <sean@farley.io>
parents:
1377
diff
changeset
|
299 return keys |