Mercurial > hgsubversion
annotate hgsubversion/wrappers.py @ 999:3f45bd7b60cf
bundle: add 'portable' parameter to prevent error (issue383)
hgsubversion does not fully implement the -r/--rev flag for `hg bundle` so
would crash when passed this parameter since the wrapped findcommonoutgoing
did not match the parameter list hg expects. With this patch the portable
parameter is added to this function, but remains unused so that `hg bundle -r`
will properly generate a bundle, but up to tip (in essence ignoring -r
parameter).
author | Michael Connor <mconnor@fb.com> |
---|---|
date | Wed, 20 Mar 2013 17:22:29 -0700 |
parents | 110794582448 |
children | b2d89ba6b871 |
rev | line source |
---|---|
264
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
1 from hgext import rebase as hgrebase |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
2 |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
438
diff
changeset
|
3 from mercurial import cmdutil |
876
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
4 try: |
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
5 from mercurial import discovery |
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
6 discovery.nullid # force demandimport to import the module |
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
7 except ImportError: |
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
8 discovery = None |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
9 from mercurial import patch |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
10 from mercurial import hg |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
11 from mercurial import util as hgutil |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
12 from mercurial import node |
283
521d9c1bb11d
Implement -u/--update support when pulling.
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
13 from mercurial import i18n |
713
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
14 from mercurial import extensions |
933
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
15 from mercurial import repair |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
16 |
992
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
17 import os |
435
7c576ae19d80
replay: start new replay module that has the relevant functions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
432
diff
changeset
|
18 import replay |
438
e8f13bd20467
pushmod: split push functions out into separate module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
435
diff
changeset
|
19 import pushmod |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
20 import stupid as stupidmod |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
21 import svnwrap |
464
0f7095f53ca3
Extend svnrepos with SubversionRepo and SVNMeta
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
22 import svnrepo |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
23 import util |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
24 |
804
6beca5b97dc7
wrappers: fix revpair after hg.b33f3e35efb0
Patrick Mezard <pmezard@gmail.com>
parents:
802
diff
changeset
|
25 try: |
819
e30ff6d5feff
Fix import based feature detection
Patrick Mezard <pmezard@gmail.com>
parents:
816
diff
changeset
|
26 from mercurial import scmutil |
e30ff6d5feff
Fix import based feature detection
Patrick Mezard <pmezard@gmail.com>
parents:
816
diff
changeset
|
27 revpair = scmutil.revpair |
804
6beca5b97dc7
wrappers: fix revpair after hg.b33f3e35efb0
Patrick Mezard <pmezard@gmail.com>
parents:
802
diff
changeset
|
28 except ImportError: |
819
e30ff6d5feff
Fix import based feature detection
Patrick Mezard <pmezard@gmail.com>
parents:
816
diff
changeset
|
29 revpair = cmdutil.revpair |
804
6beca5b97dc7
wrappers: fix revpair after hg.b33f3e35efb0
Patrick Mezard <pmezard@gmail.com>
parents:
802
diff
changeset
|
30 |
366
25ebdc16b05b
Simplify pulling revs a bit, unify stupid/replay interfaces.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
356
diff
changeset
|
31 pullfuns = { |
435
7c576ae19d80
replay: start new replay module that has the relevant functions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
432
diff
changeset
|
32 True: replay.convert_rev, |
366
25ebdc16b05b
Simplify pulling revs a bit, unify stupid/replay interfaces.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
356
diff
changeset
|
33 False: stupidmod.convert_rev, |
25ebdc16b05b
Simplify pulling revs a bit, unify stupid/replay interfaces.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
356
diff
changeset
|
34 } |
25ebdc16b05b
Simplify pulling revs a bit, unify stupid/replay interfaces.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
356
diff
changeset
|
35 |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
36 revmeta = [ |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
37 ('revision', 'revnum'), |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
38 ('user', 'author'), |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
39 ('date', 'date'), |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
40 ('message', 'message'), |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
41 ] |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
42 |
507
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
43 |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
44 def version(orig, ui, *args, **opts): |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
45 svn = opts.pop('svn', None) |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
46 orig(ui, *args, **opts) |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
47 if svn: |
664
5c94a86ddd73
version: mention bindings type in version
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
48 svnversion, bindings = svnwrap.version() |
5c94a86ddd73
version: mention bindings type in version
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
49 ui.status('\n') |
507
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
50 ui.status('hgsubversion: %s\n' % util.version(ui)) |
664
5c94a86ddd73
version: mention bindings type in version
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
51 ui.status('Subversion: %s\n' % svnversion) |
5c94a86ddd73
version: mention bindings type in version
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
52 ui.status('bindings: %s\n' % bindings) |
507
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
53 |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
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 def parents(orig, ui, repo, *args, **opts): |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
56 """show Mercurial & Subversion parents of the working dir or revision |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
57 """ |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
58 if not opts.get('svn', False): |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
59 return orig(ui, repo, *args, **opts) |
464
0f7095f53ca3
Extend svnrepos with SubversionRepo and SVNMeta
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
60 meta = repo.svnmeta() |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
61 hashes = meta.revmap.hashes() |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
438
diff
changeset
|
62 ha = util.parentrev(ui, repo, meta, hashes) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
63 if ha.node() == node.nullid: |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
64 raise hgutil.Abort('No parent svn revision!') |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
438
diff
changeset
|
65 displayer = cmdutil.show_changeset(ui, repo, opts, buffered=False) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
66 displayer.show(ha) |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
67 return 0 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
68 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
69 |
915
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
70 def getpeer(ui, opts, source): |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
71 # Since 2.3 (1ac628cd7113) |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
72 peer = getattr(hg, 'peer', None) |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
73 if peer: |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
74 return peer(ui, opts, source) |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
75 return hg.repository(ui, source) |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
76 |
930
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
77 def getlocalpeer(ui, opts, source): |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
78 peer = getpeer(ui, opts, source) |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
79 repo = getattr(peer, 'local', lambda: peer)() |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
80 if isinstance(repo, bool): |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
81 repo = peer |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
82 return repo |
915
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
83 |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
84 def getcaps(other): |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
85 return (getattr(other, 'caps', None) or |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
86 getattr(other, 'capabilities', None) or set()) |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
87 |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
88 |
771
768639283275
incoming: pass unexpanded source to wrapped function (fixes #178)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
769
diff
changeset
|
89 def incoming(orig, ui, repo, origsource='default', **opts): |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
90 """show incoming revisions from Subversion |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
91 """ |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
92 |
771
768639283275
incoming: pass unexpanded source to wrapped function (fixes #178)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
769
diff
changeset
|
93 source, revs, checkout = util.parseurl(ui.expandpath(origsource)) |
915
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
94 other = getpeer(ui, opts, source) |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
95 if 'subversion' not in getcaps(other): |
771
768639283275
incoming: pass unexpanded source to wrapped function (fixes #178)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
769
diff
changeset
|
96 return orig(ui, repo, origsource, **opts) |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
97 |
751
5e54e333ec3d
wrappers: pass on subdir when creating obtaining svnmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
749
diff
changeset
|
98 svn = other.svn |
5e54e333ec3d
wrappers: pass on subdir when creating obtaining svnmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
749
diff
changeset
|
99 meta = repo.svnmeta(svn.uuid, svn.subdir) |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
100 |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
101 ui.status('incoming changes from %s\n' % other.svnurl) |
984
6315bdd1546e
wrappers: Implement --newest-first option in incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
983
diff
changeset
|
102 svnrevisions = list(svn.revisions(start=meta.revmap.youngest)) |
6315bdd1546e
wrappers: Implement --newest-first option in incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
983
diff
changeset
|
103 if opts.get('newest_first'): |
6315bdd1546e
wrappers: Implement --newest-first option in incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
983
diff
changeset
|
104 svnrevisions.reverse() |
985
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
105 # Returns 0 if there are incoming changes, 1 otherwise. |
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
106 if len(svnrevisions) > 0: |
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
107 ret = 0 |
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
108 else: |
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
109 ret = 1 |
984
6315bdd1546e
wrappers: Implement --newest-first option in incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
983
diff
changeset
|
110 for r in svnrevisions: |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
111 ui.status('\n') |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
112 for label, attr in revmeta: |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
113 l1 = label + ':' |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
114 val = str(getattr(r, attr)).strip() |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
115 if not ui.verbose: |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
116 val = val.split('\n')[0] |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
117 ui.status('%s%s\n' % (l1.ljust(13), val)) |
985
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
118 return ret |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
119 |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
120 |
999
3f45bd7b60cf
bundle: add 'portable' parameter to prevent error (issue383)
Michael Connor <mconnor@fb.com>
parents:
992
diff
changeset
|
121 def findcommonoutgoing(repo, other, onlyheads=None, force=False, |
3f45bd7b60cf
bundle: add 'portable' parameter to prevent error (issue383)
Michael Connor <mconnor@fb.com>
parents:
992
diff
changeset
|
122 commoninc=None, portable=False): |
805
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
123 assert other.capable('subversion') |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
124 # split off #rev; TODO implement --revision/#rev support |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
125 svn = other.svn |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
126 meta = repo.svnmeta(svn.uuid, svn.subdir) |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
127 parent = repo.parents()[0].node() |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
128 hashes = meta.revmap.hashes() |
845
8cf8ff0f52fe
outgoing: fix for hg change cd956049fc14
Augie Fackler <durin42@gmail.com>
parents:
841
diff
changeset
|
129 common, heads = util.outgoing_common_and_heads(repo, hashes, parent) |
876
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
130 if discovery is not None: |
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
131 outobj = getattr(discovery, 'outgoing', None) |
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
132 if outobj is not None: |
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
133 # Mercurial 2.1 and later |
b450448a9033
wrappers: don't break on old hg versions that lack discovery
Augie Fackler <raf@durin42.com>
parents:
845
diff
changeset
|
134 return outobj(repo.changelog, common, heads) |
845
8cf8ff0f52fe
outgoing: fix for hg change cd956049fc14
Augie Fackler <durin42@gmail.com>
parents:
841
diff
changeset
|
135 # Mercurial 2.0 and earlier |
8cf8ff0f52fe
outgoing: fix for hg change cd956049fc14
Augie Fackler <durin42@gmail.com>
parents:
841
diff
changeset
|
136 return common, heads |
805
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
137 |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
138 |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
139 def findoutgoing(repo, dest=None, heads=None, force=False): |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
140 """show changesets not found in the Subversion repository |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
141 """ |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
142 assert dest.capable('subversion') |
284
f8f9a2993705
Implement parseurl support (#revision in repository urls)
Martijn Pieters <mj@zopatista.com>
parents:
283
diff
changeset
|
143 # split off #rev; TODO implement --revision/#rev support |
837
805ef27fbcbe
hgsubversion/*.py: add space after comment symbol #
Yonggang Luo <luoyonggang@gmail.com>
parents:
821
diff
changeset
|
144 # svnurl, revs, checkout = util.parseurl(dest.svnurl, heads) |
751
5e54e333ec3d
wrappers: pass on subdir when creating obtaining svnmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
749
diff
changeset
|
145 svn = dest.svn |
5e54e333ec3d
wrappers: pass on subdir when creating obtaining svnmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
749
diff
changeset
|
146 meta = repo.svnmeta(svn.uuid, svn.subdir) |
406
e360558ba65f
add a function to generate svn_commit_hashes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
405
diff
changeset
|
147 parent = repo.parents()[0].node() |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
148 hashes = meta.revmap.hashes() |
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
149 return util.outgoing_revisions(repo, hashes, parent) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
150 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
151 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
152 def diff(orig, ui, repo, *args, **opts): |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
153 """show a diff of the most recent revision against its parent from svn |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
154 """ |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
155 if not opts.get('svn', False) or opts.get('change', None): |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
156 return orig(ui, repo, *args, **opts) |
464
0f7095f53ca3
Extend svnrepos with SubversionRepo and SVNMeta
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
157 meta = repo.svnmeta() |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
158 hashes = meta.revmap.hashes() |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
159 if not opts.get('rev', None): |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
160 parent = repo.parents()[0] |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
161 o_r = util.outgoing_revisions(repo, hashes, parent.node()) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
162 if o_r: |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
163 parent = repo[o_r[-1]].parents()[0] |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
164 opts['rev'] = ['%s:.' % node.hex(parent.node()), ] |
804
6beca5b97dc7
wrappers: fix revpair after hg.b33f3e35efb0
Patrick Mezard <pmezard@gmail.com>
parents:
802
diff
changeset
|
165 node1, node2 = revpair(repo, opts['rev']) |
406
e360558ba65f
add a function to generate svn_commit_hashes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
405
diff
changeset
|
166 baserev, _junk = hashes.get(node1, (-1, 'junk')) |
e360558ba65f
add a function to generate svn_commit_hashes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
405
diff
changeset
|
167 newrev, _junk = hashes.get(node2, (-1, 'junk')) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
168 it = patch.diff(repo, node1, node2, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
169 opts=patch.diffopts(ui, opts={'git': True, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
170 'show_function': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
171 'ignore_all_space': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
172 'ignore_space_change': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
173 'ignore_blank_lines': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
174 'unified': True, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
175 'text': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
176 })) |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
438
diff
changeset
|
177 ui.write(util.filterdiff(''.join(it), baserev, newrev)) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
178 |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
179 def push(repo, dest, force, revs): |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
180 """push revisions starting at a specified head back to Subversion. |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
181 """ |
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
|
182 assert not revs, 'designated revisions for push remains unimplemented.' |
802
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
183 if hasattr(cmdutil, 'bail_if_changed'): |
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
184 cmdutil.bail_if_changed(repo) |
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
185 else: |
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
186 # Since 1.9 (d68ddccf276b) |
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
187 cmdutil.bailifchanged(repo) |
783
7913a82a8cdd
Check mercurial/third-parties push conditions before pushing
Patrick Mezard <pmezard@gmail.com>
parents:
779
diff
changeset
|
188 checkpush = getattr(repo, 'checkpush', None) |
7913a82a8cdd
Check mercurial/third-parties push conditions before pushing
Patrick Mezard <pmezard@gmail.com>
parents:
779
diff
changeset
|
189 if checkpush: |
7913a82a8cdd
Check mercurial/third-parties push conditions before pushing
Patrick Mezard <pmezard@gmail.com>
parents:
779
diff
changeset
|
190 checkpush(force, revs) |
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
|
191 ui = repo.ui |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
192 old_encoding = util.swap_out_encoding() |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
193 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
194 temporary_commits = [] |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
195 try: |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
196 # TODO: implement --rev/#rev support |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
197 # TODO: do credentials specified in the URL still work? |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
198 svn = dest.svn |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
199 meta = repo.svnmeta(svn.uuid, svn.subdir) |
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
|
200 |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
201 # Strategy: |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
202 # 1. Find all outgoing commits from this head |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
203 if len(repo.parents()) != 1: |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
204 ui.status('Cowardly refusing to push branch merge\n') |
626
8e621dbb82d4
push: return reasonable status codes to the end user
Augie Fackler <durin42@gmail.com>
parents:
620
diff
changeset
|
205 return 0 # results in nonzero exit status, see hg's commands.py |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
206 workingrev = repo.parents()[0] |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
207 ui.status('searching for changes\n') |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
208 hashes = meta.revmap.hashes() |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
209 outgoing = util.outgoing_revisions(repo, hashes, workingrev.node()) |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
210 if not (outgoing and len(outgoing)): |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
211 ui.status('no changes found\n') |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
212 return 1 # so we get a sane exit status, see hg's commands.push |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
213 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
214 tip_ctx = repo[outgoing[-1]].p1() |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
215 svnbranch = tip_ctx.branch() |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
216 modified_files = {} |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
217 for i in range(len(outgoing) - 1, -1, -1): |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
218 # 2. Pick the oldest changeset that needs to be pushed |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
219 current_ctx = repo[outgoing[i]] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
220 original_ctx = current_ctx |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
221 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
222 if len(current_ctx.parents()) != 1: |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
223 ui.status('Found a branch merge, this needs discussion and ' |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
224 'implementation.\n') |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
225 # results in nonzero exit status, see hg's commands.py |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
226 return 0 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
227 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
228 # 3. Move the changeset to the tip of the branch if necessary |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
229 conflicts = False |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
230 for file in current_ctx.files(): |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
231 if file in modified_files: |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
232 conflicts = True |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
233 break |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
234 |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
235 if conflicts or current_ctx.branch() != svnbranch: |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
236 util.swap_out_encoding(old_encoding) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
237 try: |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
238 def extrafn(ctx, extra): |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
239 extra['branch'] = ctx.branch() |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
240 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
241 ui.status('rebasing %s onto %s \n' % (current_ctx, tip_ctx)) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
242 hgrebase.rebase(ui, repo, |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
243 dest=node.hex(tip_ctx.node()), |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
244 rev=[node.hex(current_ctx.node())], |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
245 extrafn=extrafn, keep=True) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
246 finally: |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
247 util.swap_out_encoding() |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
248 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
249 # Don't trust the pre-rebase repo and context. |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
250 repo = getlocalpeer(ui, {}, meta.path) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
251 tip_ctx = repo[tip_ctx.node()] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
252 for c in tip_ctx.descendants(): |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
253 rebasesrc = c.extra().get('rebase_source') |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
254 if rebasesrc and node.bin(rebasesrc) == current_ctx.node(): |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
255 current_ctx = c |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
256 temporary_commits.append(c.node()) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
257 break |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
258 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
259 # 4. Push the changeset to subversion |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
260 tip_hash = hashes[tip_ctx.node()][0] |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
261 try: |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
262 ui.status('committing %s\n' % current_ctx) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
263 pushmod.commit(ui, repo, current_ctx, meta, tip_hash, svn) |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
264 except pushmod.NoFilesException: |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
265 ui.warn("Could not push revision %s because it had no changes " |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
266 "in svn.\n" % current_ctx) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
267 return |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
268 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
269 # 5. Pull the latest changesets from subversion, which will |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
270 # include the one we just committed (and possibly others). |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
271 r = repo.pull(dest, force=force) |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
272 assert not r or r == 0 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
273 meta = repo.svnmeta(svn.uuid, svn.subdir) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
274 hashes = meta.revmap.hashes() |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
275 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
276 # 6. Move our tip to the latest pulled tip |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
277 for c in tip_ctx.descendants(): |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
278 if c.node() in hashes and c.branch() == svnbranch: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
279 tip_ctx = c |
933
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
280 |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
281 # Remember what files have been modified since the |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
282 # whole push started. |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
283 for file in c.files(): |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
284 modified_files[file] = True |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
285 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
286 # 7. Rebase any children of the commit we just pushed |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
287 # that are not in the outgoing set |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
288 for c in original_ctx.children(): |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
289 if not c.node() in hashes and not c.node() in outgoing: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
290 util.swap_out_encoding(old_encoding) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
291 try: |
992
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
292 # Path changed as subdirectories were getting |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
293 # deleted during push. |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
294 saved_path = os.getcwd() |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
295 os.chdir(repo.root) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
296 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
297 def extrafn(ctx, extra): |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
298 extra['branch'] = ctx.branch() |
933
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
299 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
300 ui.status('rebasing non-outgoing %s onto %s\n' % (c, tip_ctx)) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
301 needs_rebase_set = "%s::" % node.hex(c.node()) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
302 hgrebase.rebase(ui, repo, |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
303 dest=node.hex(tip_ctx.node()), |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
304 rev=[needs_rebase_set], |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
305 extrafn=extrafn, keep=True) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
306 finally: |
992
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
307 os.chdir(saved_path) |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
308 util.swap_out_encoding() |
933
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
309 |
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
310 |
946
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
311 util.swap_out_encoding(old_encoding) |
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
312 try: |
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
313 hg.update(repo, repo['tip'].node()) |
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
314 finally: |
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
315 util.swap_out_encoding() |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
316 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
317 # strip the original changesets since the push was successful |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
318 repair.strip(ui, repo, outgoing, "all") |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
319 finally: |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
320 try: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
321 # It's always safe to delete the temporary commits. |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
322 # The originals are not deleted unless the push |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
323 # completely succeeded. |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
324 if temporary_commits: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
325 # If the repo is on a temporary commit, get off before |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
326 # the strip. |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
327 parent = repo[None].p1() |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
328 if parent.node() in temporary_commits: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
329 hg.update(repo, parent.p1().node()) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
330 repair.strip(ui, repo, temporary_commits, backup=None) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
331 finally: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
332 util.swap_out_encoding(old_encoding) |
626
8e621dbb82d4
push: return reasonable status codes to the end user
Augie Fackler <durin42@gmail.com>
parents:
620
diff
changeset
|
333 return 1 # so we get a sane exit status, see hg's commands.push |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
334 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
335 |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
336 def pull(repo, source, heads=[], force=False): |
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
337 """pull new revisions from Subversion""" |
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
338 assert source.capable('subversion') |
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
339 svn_url = source.svnurl |
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
|
340 |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
341
diff
changeset
|
341 # Split off #rev |
555
cbd7065e6ab4
util: add parseurl method to abstract away differences between 1.4 and 1.5
Augie Fackler <durin42@gmail.com>
parents:
523
diff
changeset
|
342 svn_url, heads, checkout = util.parseurl(svn_url, heads) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
343 old_encoding = util.swap_out_encoding() |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
344 total = None |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
341
diff
changeset
|
345 try: |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
346 have_replay = not repo.ui.configbool('hgsubversion', 'stupid') |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
347 if not have_replay: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
348 repo.ui.note('fetching stupidly...\n') |
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
|
349 |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
350 svn = source.svn |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
351 meta = repo.svnmeta(svn.uuid, svn.subdir) |
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
|
352 |
974
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
353 stopat_rev = util.parse_revnum(svn, checkout) |
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
354 |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
355 layout = repo.ui.config('hgsubversion', 'layout', 'auto') |
983
0ba09ecf5df2
Layout option can be accepted only auto, single, or standard.
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
982
diff
changeset
|
356 if not layout in ('auto', 'single', 'standard'): |
986
1bdd075a490a
cleanup: avoid \' in strings where easy
Augie Fackler <raf@durin42.com>
parents:
985
diff
changeset
|
357 raise hgutil.Abort("unknown layout '%s'" % layout) |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
358 if layout == 'auto': |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
359 try: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
360 rootlist = svn.list_dir('', revision=(stopat_rev or None)) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
361 except svnwrap.SubversionException, e: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
362 err = "%s (subversion error: %d)" % (e.args[0], e.args[1]) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
363 raise hgutil.Abort(err) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
364 if sum(map(lambda x: x in rootlist, ('branches', 'tags', 'trunk'))): |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
365 layout = 'standard' |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
366 else: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
367 layout = 'single' |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
368 repo.ui.setconfig('hgsubversion', 'layout', layout) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
369 repo.ui.note('using %s layout\n' % layout) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
370 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
371 branch = repo.ui.config('hgsubversion', 'branch') |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
372 if branch: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
373 if layout != 'single': |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
374 msg = ('branch cannot be specified for Subversion clones using ' |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
375 'standard directory layout') |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
376 raise hgutil.Abort(msg) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
377 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
378 meta.branchmap['default'] = branch |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
379 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
380 ui = repo.ui |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
381 start = meta.revmap.youngest |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
382 origrevcount = len(meta.revmap) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
383 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
384 if start <= 0: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
385 # we are initializing a new repository |
974
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
386 start = util.parse_revnum(svn, repo.ui.config('hgsubversion', |
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
387 'startrev', 0)) |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
388 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
389 if start > 0: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
390 if layout == 'standard': |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
391 raise hgutil.Abort('non-zero start revisions are only ' |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
392 'supported for single-directory clones.') |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
393 ui.note('starting at revision %d; any prior will be ignored\n' |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
394 % start) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
395 # fetch all revisions *including* the one specified... |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
396 start -= 1 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
397 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
398 # anything less than zero makes no sense |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
399 if start < 0: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
400 start = 0 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
401 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
402 skiprevs = repo.ui.configlist('hgsubversion', 'unsafeskip', '') |
974
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
403 skiprevs = set(util.parse_revnum(svn, r) for r in skiprevs) |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
404 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
405 oldrevisions = len(meta.revmap) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
406 if stopat_rev: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
407 total = stopat_rev - start |
651
827547493112
clone: allow specifying a start revision.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
647
diff
changeset
|
408 else: |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
409 total = svn.HEAD - start |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
410 lastpulled = None |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
411 |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
412 try: |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
413 # start converting revisions |
787
4bbc6bf947f5
replay: fetch full revision at most once per run (issue252)
Patrick Mezard <pmezard@gmail.com>
parents:
783
diff
changeset
|
414 firstrun = True |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
415 for r in svn.revisions(start=start, stop=stopat_rev): |
980
641d0c41d1ea
pull: use a single if-statement for the two ways to skip revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
416 if (r.revnum in skiprevs or |
641d0c41d1ea
pull: use a single if-statement for the two ways to skip revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
417 (r.author is None and |
641d0c41d1ea
pull: use a single if-statement for the two ways to skip revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
418 r.message == 'This is an empty revision for padding.')): |
981
82bbb3428684
pull: save the last pulled revision *after* converting revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
980
diff
changeset
|
419 lastpulled = r.revnum |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
420 continue |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
421 tbdelta = meta.update_branch_tag_map_for_rev(r) |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
422 # got a 502? Try more than once! |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
423 tries = 0 |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
424 converted = False |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
425 while not converted: |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
426 try: |
561
312c8c98eeff
pull: handle commits without any commit message
Augie Fackler <durin42@gmail.com>
parents:
560
diff
changeset
|
427 msg = '' |
312c8c98eeff
pull: handle commits without any commit message
Augie Fackler <durin42@gmail.com>
parents:
560
diff
changeset
|
428 if r.message: |
312c8c98eeff
pull: handle commits without any commit message
Augie Fackler <durin42@gmail.com>
parents:
560
diff
changeset
|
429 msg = r.message.strip() |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
430 if not msg: |
769
cc1d4aa3ba41
configurable substitution for empty commit message (fixes #195)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
751
diff
changeset
|
431 msg = util.default_commit_msg(ui) |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
432 else: |
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
433 msg = [s.strip() for s in msg.splitlines() if s][0] |
749
ec52205e5ed1
pull: handle change in termwidth() api from hg change c52c629ce19e
Augie Fackler <durin42@gmail.com>
parents:
748
diff
changeset
|
434 if getattr(ui, 'termwidth', False): |
ec52205e5ed1
pull: handle change in termwidth() api from hg change c52c629ce19e
Augie Fackler <durin42@gmail.com>
parents:
748
diff
changeset
|
435 w = ui.termwidth() |
ec52205e5ed1
pull: handle change in termwidth() api from hg change c52c629ce19e
Augie Fackler <durin42@gmail.com>
parents:
748
diff
changeset
|
436 else: |
ec52205e5ed1
pull: handle change in termwidth() api from hg change c52c629ce19e
Augie Fackler <durin42@gmail.com>
parents:
748
diff
changeset
|
437 w = hgutil.termwidth() |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
438 bits = (r.revnum, r.author, msg) |
606
789eec0a339c
wrappers: fix pull output if termwidth() is inexact
Patrick Mezard <pmezard@gmail.com>
parents:
604
diff
changeset
|
439 ui.status(('[r%d] %s: %s' % bits)[:w] + '\n') |
602
7c44bc259505
wrappers.pull: fix calculation of progress totals.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
601
diff
changeset
|
440 util.progress(ui, 'pull', r.revnum - start, total=total) |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
441 |
444
8c545dcad7b1
wrappers: save tbdelta in one place for both stupid and replay
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
440
diff
changeset
|
442 meta.save_tbdelta(tbdelta) |
787
4bbc6bf947f5
replay: fetch full revision at most once per run (issue252)
Patrick Mezard <pmezard@gmail.com>
parents:
783
diff
changeset
|
443 close = pullfuns[have_replay](ui, meta, svn, r, tbdelta, |
4bbc6bf947f5
replay: fetch full revision at most once per run (issue252)
Patrick Mezard <pmezard@gmail.com>
parents:
783
diff
changeset
|
444 firstrun) |
520
5a5b90a6d522
svnmeta: internalize tags delta
Patrick Mezard <pmezard@gmail.com>
parents:
507
diff
changeset
|
445 meta.committags(r, close) |
432
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
446 for branch, parent in close.iteritems(): |
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
447 if parent in (None, node.nullid): |
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
448 continue |
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
449 meta.delbranch(branch, parent, r) |
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
450 |
418
92beeefeaf93
save metadata from one place
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
416
diff
changeset
|
451 meta.save() |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
452 converted = True |
787
4bbc6bf947f5
replay: fetch full revision at most once per run (issue252)
Patrick Mezard <pmezard@gmail.com>
parents:
783
diff
changeset
|
453 firstrun = False |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
454 |
837
805ef27fbcbe
hgsubversion/*.py: add space after comment symbol #
Yonggang Luo <luoyonggang@gmail.com>
parents:
821
diff
changeset
|
455 except svnwrap.SubversionRepoCanNotReplay, e: # pragma: no cover |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
456 ui.status('%s\n' % e.message) |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
457 stupidmod.print_your_svn_is_old_message(ui) |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
458 have_replay = False |
837
805ef27fbcbe
hgsubversion/*.py: add space after comment symbol #
Yonggang Luo <luoyonggang@gmail.com>
parents:
821
diff
changeset
|
459 except svnwrap.SubversionException, e: # pragma: no cover |
601
0fe490ce2fbb
isolate all imports of Subversion modules in svnwrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
600
diff
changeset
|
460 if (e.args[1] == svnwrap.ERR_RA_DAV_REQUEST_FAILED |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
461 and '502' in str(e) |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
462 and tries < 3): |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
463 tries += 1 |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
464 ui.status('Got a 502, retrying (%s)\n' % tries) |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
465 else: |
705
385213d2e2da
pull: reveal the handled SubversionException to --traceback.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
701
diff
changeset
|
466 ui.traceback() |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
467 raise hgutil.Abort(*e.args) |
981
82bbb3428684
pull: save the last pulled revision *after* converting revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
980
diff
changeset
|
468 |
82bbb3428684
pull: save the last pulled revision *after* converting revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
980
diff
changeset
|
469 lastpulled = r.revnum |
82bbb3428684
pull: save the last pulled revision *after* converting revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
980
diff
changeset
|
470 |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
471 except KeyboardInterrupt: |
895
5b9f17e34126
don't suppress KeyboardInterrupt exception tracebacks
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
876
diff
changeset
|
472 ui.traceback() |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
473 finally: |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
474 if total is not None: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
475 util.progress(ui, 'pull', None, total=total) |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
476 util.swap_out_encoding(old_encoding) |
264
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
477 |
821
f28e0f54a6ef
svnmeta: store youngest revision pulled from subversion
Augie Fackler <durin42@gmail.com>
parents:
819
diff
changeset
|
478 if lastpulled is not None: |
f28e0f54a6ef
svnmeta: store youngest revision pulled from subversion
Augie Fackler <durin42@gmail.com>
parents:
819
diff
changeset
|
479 meta.revmap.youngest = lastpulled |
523
fa7aab230f1d
wrappers: calculate and return exact count of changesets added.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
520
diff
changeset
|
480 revisions = len(meta.revmap) - oldrevisions |
fa7aab230f1d
wrappers: calculate and return exact count of changesets added.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
520
diff
changeset
|
481 |
283
521d9c1bb11d
Implement -u/--update support when pulling.
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
482 if revisions == 0: |
521d9c1bb11d
Implement -u/--update support when pulling.
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
483 ui.status(i18n._("no changes found\n")) |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
484 return 0 |
283
521d9c1bb11d
Implement -u/--update support when pulling.
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
485 else: |
341
cfbd0e563af9
wrappers: remove unused clone() function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
486 ui.status("pulled %d revisions\n" % revisions) |
264
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
487 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
488 def rebase(orig, ui, repo, **opts): |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
489 """rebase current unpushed revisions onto the Subversion head |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
490 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
491 This moves a line of development from making its own head to the top of |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
492 Subversion development, linearizing the changes. In order to make sure you |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
493 rebase on top of the current top of Subversion work, you should probably run |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
494 'hg svn pull' before running this. |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
495 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
496 Also looks for svnextrafn and svnsourcerev in **opts. |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
497 """ |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
498 if not opts.get('svn', False): |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
499 return orig(ui, repo, **opts) |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
500 def extrafn2(ctx, extra): |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
501 """defined here so we can add things easily. |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
502 """ |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
503 extra['branch'] = ctx.branch() |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
504 extrafn = opts.get('svnextrafn', extrafn2) |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
505 sourcerev = opts.get('svnsourcerev', repo.parents()[0].node()) |
464
0f7095f53ca3
Extend svnrepos with SubversionRepo and SVNMeta
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
506 meta = repo.svnmeta() |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
507 hashes = meta.revmap.hashes() |
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
508 o_r = util.outgoing_revisions(repo, hashes, sourcerev=sourcerev) |
264
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
509 if not o_r: |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
510 ui.status('Nothing to rebase!\n') |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
511 return 0 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
512 if len(repo[sourcerev].children()): |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
513 ui.status('Refusing to rebase non-head commit like a coward\n') |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
514 return 0 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
515 parent_rev = repo[o_r[-1]].parents()[0] |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
516 target_rev = parent_rev |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
517 p_n = parent_rev.node() |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
518 exhausted_choices = False |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
519 while target_rev.children() and not exhausted_choices: |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
520 for c in target_rev.children(): |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
521 exhausted_choices = True |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
522 n = c.node() |
406
e360558ba65f
add a function to generate svn_commit_hashes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
405
diff
changeset
|
523 if (n in hashes and hashes[n][1] == hashes[p_n][1]): |
264
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
524 target_rev = c |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
525 exhausted_choices = False |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
526 break |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
527 if parent_rev == target_rev: |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
528 ui.status('Already up to date!\n') |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
529 return 0 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
530 return orig(ui, repo, dest=node.hex(target_rev.node()), |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
531 base=node.hex(sourcerev), |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
532 extrafn=extrafn) |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
533 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
534 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
535 optionmap = { |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
536 'tagpaths': ('hgsubversion', 'tagpaths'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
537 'authors': ('hgsubversion', 'authormap'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
538 'filemap': ('hgsubversion', 'filemap'), |
574
8e025a6f0db4
add basic branchmap functionality, to rename branches
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
561
diff
changeset
|
539 'branchmap': ('hgsubversion', 'branchmap'), |
729 | 540 'tagmap': ('hgsubversion', 'tagmap'), |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
541 'stupid': ('hgsubversion', 'stupid'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
542 'defaulthost': ('hgsubversion', 'defaulthost'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
543 'defaultauthors': ('hgsubversion', 'defaultauthors'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
544 'usebranchnames': ('hgsubversion', 'usebranchnames'), |
499
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
466
diff
changeset
|
545 'layout': ('hgsubversion', 'layout'), |
651
827547493112
clone: allow specifying a start revision.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
647
diff
changeset
|
546 'startrev': ('hgsubversion', 'startrev'), |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
547 } |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
548 |
499
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
466
diff
changeset
|
549 dontretain = { 'hgsubversion': set(['authormap', 'filemap', 'layout', ]) } |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
550 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
551 def clone(orig, ui, source, dest=None, **opts): |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
552 """ |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
553 Some of the options listed below only apply to Subversion |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
554 %(target)s. See 'hg help %(extension)s' for more information on |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
555 them as well as other ways of customising the conversion process. |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
556 """ |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
557 |
713
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
558 data = {} |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
559 def hgclonewrapper(orig, ui, *args, **opts): |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
560 if getattr(hg, 'peer', None): |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
561 # Since 1.9 (d976542986d2) |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
562 origsource = args[1] |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
563 else: |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
564 origsource = args[0] |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
565 |
713
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
566 if isinstance(origsource, str): |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
567 source, branch, checkout = util.parseurl(ui.expandpath(origsource), |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
568 opts.get('branch')) |
915
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
569 srcrepo = getpeer(ui, opts, source) |
713
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
570 else: |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
571 srcrepo = origsource |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
572 |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
573 if srcrepo.capable('subversion'): |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
574 branches = opts.pop('branch', None) |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
575 if branches: |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
576 data['branches'] = branches |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
577 ui.setconfig('hgsubversion', 'branch', branches[-1]) |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
578 |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
579 data['srcrepo'], data['dstrepo'] = orig(ui, *args, **opts) |
701
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
580 |
840
88f3cda47def
wrappers: clone must return hg.clone() result (issue300, issue306)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
821
diff
changeset
|
581 return data['srcrepo'], data['dstrepo'] |
88f3cda47def
wrappers: clone must return hg.clone() result (issue300, issue306)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
821
diff
changeset
|
582 |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
583 for opt, (section, name) in optionmap.iteritems(): |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
584 if opt in opts and opts[opt]: |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
585 ui.setconfig(section, name, str(opts.pop(opt))) |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
586 |
713
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
587 # calling hg.clone directoly to get the repository instances it returns, |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
588 # breaks in subtle ways, so we double-wrap |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
589 orighgclone = extensions.wrapfunction(hg, 'clone', hgclonewrapper) |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
590 orig(ui, source, dest, **opts) |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
591 hg.clone = orighgclone |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
592 |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
593 # do this again; the ui instance isn't shared between the wrappers |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
594 if data.get('branches'): |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
595 ui.setconfig('hgsubversion', 'branch', data['branches'][-1]) |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
596 |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
597 dstrepo = data.get('dstrepo') |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
598 srcrepo = data.get('srcrepo') |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
599 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
600 if dstrepo.local() and srcrepo.capable('subversion'): |
915
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
601 dst = dstrepo.local() |
930
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
602 if isinstance(dst, bool): |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
603 # Apparently <= hg@1.9 |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
604 fd = dstrepo.opener("hgrc", "a", text=True) |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
605 else: |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
606 fd = dst.opener("hgrc", "a", text=True) |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
607 for section in set(s for s, v in optionmap.itervalues()): |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
608 config = dict(ui.configitems(section)) |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
609 for name in dontretain[section]: |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
610 config.pop(name, None) |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
611 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
612 if config: |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
613 fd.write('\n[%s]\n' % section) |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
614 map(fd.write, ('%s = %s\n' % p for p in config.iteritems())) |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
615 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
616 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
617 def generic(orig, ui, repo, *args, **opts): |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
618 """ |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
619 Subversion %(target)s can be used for %(command)s. See 'hg help |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
620 %(extension)s' for more on the conversion process. |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
621 """ |
701
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
622 |
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
623 branch = opts.get('branch', None) |
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
624 if branch: |
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
625 ui.setconfig('hgsubversion', 'branch', branch[-1]) |
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
626 |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
627 for opt, (section, name) in optionmap.iteritems(): |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
628 if opt in opts and opts[opt]: |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
629 if isinstance(repo, str): |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
630 ui.setconfig(section, name, opts.pop(opt)) |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
631 else: |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
632 repo.ui.setconfig(section, name, opts.pop(opt)) |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
633 return orig(ui, repo, *args, **opts) |