Mercurial > hgsubversion
annotate hgsubversion/wrappers.py @ 1005:5bba4d1becde
layouts: refactor layout loading based on config into function
Refactor the logic for loading the layout based on config, and for
validating that config is sane into a single function.
author | David Schleimer <dschleimer@fb.com> |
---|---|
date | Wed, 17 Apr 2013 15:00:33 -0700 |
parents | b2d89ba6b871 |
children | 3df6ed4e7561 |
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 |
1004
b2d89ba6b871
layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
999
diff
changeset
|
17 import layouts |
992
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
18 import os |
435
7c576ae19d80
replay: start new replay module that has the relevant functions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
432
diff
changeset
|
19 import replay |
438
e8f13bd20467
pushmod: split push functions out into separate module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
435
diff
changeset
|
20 import pushmod |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
21 import stupid as stupidmod |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
22 import svnwrap |
464
0f7095f53ca3
Extend svnrepos with SubversionRepo and SVNMeta
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
23 import svnrepo |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
24 import util |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
25 |
804
6beca5b97dc7
wrappers: fix revpair after hg.b33f3e35efb0
Patrick Mezard <pmezard@gmail.com>
parents:
802
diff
changeset
|
26 try: |
819
e30ff6d5feff
Fix import based feature detection
Patrick Mezard <pmezard@gmail.com>
parents:
816
diff
changeset
|
27 from mercurial import scmutil |
e30ff6d5feff
Fix import based feature detection
Patrick Mezard <pmezard@gmail.com>
parents:
816
diff
changeset
|
28 revpair = scmutil.revpair |
804
6beca5b97dc7
wrappers: fix revpair after hg.b33f3e35efb0
Patrick Mezard <pmezard@gmail.com>
parents:
802
diff
changeset
|
29 except ImportError: |
819
e30ff6d5feff
Fix import based feature detection
Patrick Mezard <pmezard@gmail.com>
parents:
816
diff
changeset
|
30 revpair = cmdutil.revpair |
804
6beca5b97dc7
wrappers: fix revpair after hg.b33f3e35efb0
Patrick Mezard <pmezard@gmail.com>
parents:
802
diff
changeset
|
31 |
366
25ebdc16b05b
Simplify pulling revs a bit, unify stupid/replay interfaces.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
356
diff
changeset
|
32 pullfuns = { |
435
7c576ae19d80
replay: start new replay module that has the relevant functions
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
432
diff
changeset
|
33 True: replay.convert_rev, |
366
25ebdc16b05b
Simplify pulling revs a bit, unify stupid/replay interfaces.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
356
diff
changeset
|
34 False: stupidmod.convert_rev, |
25ebdc16b05b
Simplify pulling revs a bit, unify stupid/replay interfaces.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
356
diff
changeset
|
35 } |
25ebdc16b05b
Simplify pulling revs a bit, unify stupid/replay interfaces.
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
356
diff
changeset
|
36 |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
37 revmeta = [ |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
38 ('revision', 'revnum'), |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
39 ('user', 'author'), |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
40 ('date', 'date'), |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
41 ('message', 'message'), |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
42 ] |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
43 |
507
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
44 |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
45 def version(orig, ui, *args, **opts): |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
46 svn = opts.pop('svn', None) |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
47 orig(ui, *args, **opts) |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
48 if svn: |
664
5c94a86ddd73
version: mention bindings type in version
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
49 svnversion, bindings = svnwrap.version() |
5c94a86ddd73
version: mention bindings type in version
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
50 ui.status('\n') |
507
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
51 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
|
52 ui.status('Subversion: %s\n' % svnversion) |
5c94a86ddd73
version: mention bindings type in version
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
53 ui.status('bindings: %s\n' % bindings) |
507
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
54 |
4ce09bf4d382
wrappers: wrap version with a --svn flag
Augie Fackler <durin42@gmail.com>
parents:
499
diff
changeset
|
55 |
403
37c96b78b8c0
uisetup: use a single loop/abstraction for wrapping all the commands
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
402
diff
changeset
|
56 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
|
57 """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
|
58 """ |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
59 if not opts.get('svn', False): |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
60 return orig(ui, repo, *args, **opts) |
464
0f7095f53ca3
Extend svnrepos with SubversionRepo and SVNMeta
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
61 meta = repo.svnmeta() |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
62 hashes = meta.revmap.hashes() |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
438
diff
changeset
|
63 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
|
64 if ha.node() == node.nullid: |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
65 raise hgutil.Abort('No parent svn revision!') |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
438
diff
changeset
|
66 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
|
67 displayer.show(ha) |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
68 return 0 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
69 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
70 |
915
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
71 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
|
72 # 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
|
73 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
|
74 if peer: |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
75 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
|
76 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
|
77 |
930
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
78 def getlocalpeer(ui, opts, source): |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
79 peer = getpeer(ui, opts, source) |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
80 repo = getattr(peer, 'local', lambda: peer)() |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
81 if isinstance(repo, bool): |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
82 repo = peer |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
83 return repo |
915
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
84 |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
85 def getcaps(other): |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
86 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
|
87 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
|
88 |
d6c47c33f6a2
fix breakage introduced by peer classes in hg 2.3
Bryan O'Sullivan <bryano@fb.com>
parents:
908
diff
changeset
|
89 |
771
768639283275
incoming: pass unexpanded source to wrapped function (fixes #178)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
769
diff
changeset
|
90 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
|
91 """show incoming revisions from Subversion |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
92 """ |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
93 |
771
768639283275
incoming: pass unexpanded source to wrapped function (fixes #178)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
769
diff
changeset
|
94 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
|
95 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
|
96 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
|
97 return orig(ui, repo, origsource, **opts) |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
98 |
751
5e54e333ec3d
wrappers: pass on subdir when creating obtaining svnmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
749
diff
changeset
|
99 svn = other.svn |
5e54e333ec3d
wrappers: pass on subdir when creating obtaining svnmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
749
diff
changeset
|
100 meta = repo.svnmeta(svn.uuid, svn.subdir) |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
101 |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
102 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
|
103 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
|
104 if opts.get('newest_first'): |
6315bdd1546e
wrappers: Implement --newest-first option in incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
983
diff
changeset
|
105 svnrevisions.reverse() |
985
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
106 # 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
|
107 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
|
108 ret = 0 |
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
109 else: |
b303b60be11e
wrappers: Return the same value as the original incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
984
diff
changeset
|
110 ret = 1 |
984
6315bdd1546e
wrappers: Implement --newest-first option in incoming command
Mitsuhiro Koga <shiena.jp@gmail.com>
parents:
983
diff
changeset
|
111 for r in svnrevisions: |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
112 ui.status('\n') |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
113 for label, attr in revmeta: |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
114 l1 = label + ':' |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
115 val = str(getattr(r, attr)).strip() |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
116 if not ui.verbose: |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
117 val = val.split('\n')[0] |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
118 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
|
119 return ret |
404
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
120 |
28e4b47b2179
add a working incoming wrapper command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
403
diff
changeset
|
121 |
999
3f45bd7b60cf
bundle: add 'portable' parameter to prevent error (issue383)
Michael Connor <mconnor@fb.com>
parents:
992
diff
changeset
|
122 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
|
123 commoninc=None, portable=False): |
805
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
124 assert other.capable('subversion') |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
125 # 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
|
126 svn = other.svn |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
127 meta = repo.svnmeta(svn.uuid, svn.subdir) |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
128 parent = repo.parents()[0].node() |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
129 hashes = meta.revmap.hashes() |
845
8cf8ff0f52fe
outgoing: fix for hg change cd956049fc14
Augie Fackler <durin42@gmail.com>
parents:
841
diff
changeset
|
130 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
|
131 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
|
132 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
|
133 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
|
134 # 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
|
135 return outobj(repo.changelog, common, heads) |
845
8cf8ff0f52fe
outgoing: fix for hg change cd956049fc14
Augie Fackler <durin42@gmail.com>
parents:
841
diff
changeset
|
136 # Mercurial 2.0 and earlier |
8cf8ff0f52fe
outgoing: fix for hg change cd956049fc14
Augie Fackler <durin42@gmail.com>
parents:
841
diff
changeset
|
137 return common, heads |
805
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 |
a3f727c41c1d
Fix breakage introduced by discovery refactoring
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
804
diff
changeset
|
140 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
|
141 """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
|
142 """ |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
143 assert dest.capable('subversion') |
284
f8f9a2993705
Implement parseurl support (#revision in repository urls)
Martijn Pieters <mj@zopatista.com>
parents:
283
diff
changeset
|
144 # 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
|
145 # 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
|
146 svn = dest.svn |
5e54e333ec3d
wrappers: pass on subdir when creating obtaining svnmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
749
diff
changeset
|
147 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
|
148 parent = repo.parents()[0].node() |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
149 hashes = meta.revmap.hashes() |
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
150 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
|
151 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
152 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
153 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
|
154 """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
|
155 """ |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
156 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
|
157 return orig(ui, repo, *args, **opts) |
464
0f7095f53ca3
Extend svnrepos with SubversionRepo and SVNMeta
Patrick Mezard <pmezard@gmail.com>
parents:
463
diff
changeset
|
158 meta = repo.svnmeta() |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
159 hashes = meta.revmap.hashes() |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
160 if not opts.get('rev', None): |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
161 parent = repo.parents()[0] |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
162 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
|
163 if o_r: |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
164 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
|
165 opts['rev'] = ['%s:.' % node.hex(parent.node()), ] |
804
6beca5b97dc7
wrappers: fix revpair after hg.b33f3e35efb0
Patrick Mezard <pmezard@gmail.com>
parents:
802
diff
changeset
|
166 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
|
167 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
|
168 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
|
169 it = patch.diff(repo, node1, node2, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
170 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
|
171 'show_function': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
172 'ignore_all_space': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
173 'ignore_space_change': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
174 'ignore_blank_lines': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
175 'unified': True, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
176 'text': False, |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
177 })) |
440
80909328aef1
move remaining cmdutils into util
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
438
diff
changeset
|
178 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
|
179 |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
180 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
|
181 """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
|
182 """ |
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
|
183 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
|
184 if hasattr(cmdutil, 'bail_if_changed'): |
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
185 cmdutil.bail_if_changed(repo) |
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
186 else: |
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
187 # Since 1.9 (d68ddccf276b) |
d50858a8a17b
wrapper: fix bail_if_changed() after hg.d68ddccf276b
Patrick Mezard <pmezard@gmail.com>
parents:
787
diff
changeset
|
188 cmdutil.bailifchanged(repo) |
783
7913a82a8cdd
Check mercurial/third-parties push conditions before pushing
Patrick Mezard <pmezard@gmail.com>
parents:
779
diff
changeset
|
189 checkpush = getattr(repo, 'checkpush', None) |
7913a82a8cdd
Check mercurial/third-parties push conditions before pushing
Patrick Mezard <pmezard@gmail.com>
parents:
779
diff
changeset
|
190 if checkpush: |
7913a82a8cdd
Check mercurial/third-parties push conditions before pushing
Patrick Mezard <pmezard@gmail.com>
parents:
779
diff
changeset
|
191 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
|
192 ui = repo.ui |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
193 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
|
194 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
195 temporary_commits = [] |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
196 try: |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
197 # TODO: implement --rev/#rev support |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
198 # 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
|
199 svn = dest.svn |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
200 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
|
201 |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
202 # Strategy: |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
203 # 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
|
204 if len(repo.parents()) != 1: |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
205 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
|
206 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
|
207 workingrev = repo.parents()[0] |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
208 ui.status('searching for changes\n') |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
209 hashes = meta.revmap.hashes() |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
210 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
|
211 if not (outgoing and len(outgoing)): |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
212 ui.status('no changes found\n') |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
213 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
|
214 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
215 tip_ctx = repo[outgoing[-1]].p1() |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
216 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
|
217 modified_files = {} |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
218 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
|
219 # 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
|
220 current_ctx = repo[outgoing[i]] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
221 original_ctx = current_ctx |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
222 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
223 if len(current_ctx.parents()) != 1: |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
224 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
|
225 'implementation.\n') |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
226 # 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
|
227 return 0 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
228 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
229 # 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
|
230 conflicts = False |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
231 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
|
232 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
|
233 conflicts = True |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
234 break |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
235 |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
236 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
|
237 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
|
238 try: |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
239 def extrafn(ctx, extra): |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
240 extra['branch'] = ctx.branch() |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
241 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
242 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
|
243 hgrebase.rebase(ui, repo, |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
244 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
|
245 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
|
246 extrafn=extrafn, keep=True) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
247 finally: |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
248 util.swap_out_encoding() |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
249 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
250 # 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
|
251 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
|
252 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
|
253 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
|
254 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
|
255 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
|
256 current_ctx = c |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
257 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
|
258 break |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
259 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
260 # 4. Push the changeset to subversion |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
261 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
|
262 try: |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
263 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
|
264 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
|
265 except pushmod.NoFilesException: |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
266 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
|
267 "in svn.\n" % current_ctx) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
268 return |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
269 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
270 # 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
|
271 # 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
|
272 r = repo.pull(dest, force=force) |
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
273 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
|
274 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
|
275 hashes = meta.revmap.hashes() |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
276 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
277 # 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
|
278 for c in tip_ctx.descendants(): |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
279 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
|
280 tip_ctx = c |
933
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
281 |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
282 # 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
|
283 # whole push started. |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
284 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
|
285 modified_files[file] = True |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
286 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
287 # 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
|
288 # 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
|
289 for c in original_ctx.children(): |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
290 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
|
291 util.swap_out_encoding(old_encoding) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
292 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
|
293 # 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
|
294 # 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
|
295 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
|
296 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
|
297 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
298 def extrafn(ctx, extra): |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
299 extra['branch'] = ctx.branch() |
933
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
300 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
301 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
|
302 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
|
303 hgrebase.rebase(ui, repo, |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
304 dest=node.hex(tip_ctx.node()), |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
305 rev=[needs_rebase_set], |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
306 extrafn=extrafn, keep=True) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
307 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
|
308 os.chdir(saved_path) |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
309 util.swap_out_encoding() |
933
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
310 |
a9f315eae67c
push: use native rebase instead of our rebase wrapper
David Schleimer <dschleimer@fb.com>
parents:
930
diff
changeset
|
311 |
946
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
312 util.swap_out_encoding(old_encoding) |
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
313 try: |
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
314 hg.update(repo, repo['tip'].node()) |
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
315 finally: |
289f2c7752a8
push: reset encoding before the final update
Patrick Mezard <patrick@mezard.eu>
parents:
933
diff
changeset
|
316 util.swap_out_encoding() |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
317 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
318 # 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
|
319 repair.strip(ui, repo, outgoing, "all") |
926
c4001eecfdb1
wrappers: properly reset encoding when leaving push()
Patrick Mezard <patrick@mezard.eu>
parents:
925
diff
changeset
|
320 finally: |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
321 try: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
322 # 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
|
323 # 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
|
324 # completely succeeded. |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
325 if temporary_commits: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
326 # 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
|
327 # the strip. |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
328 parent = repo[None].p1() |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
329 if parent.node() in temporary_commits: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
330 hg.update(repo, parent.p1().node()) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
331 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
|
332 finally: |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
986
diff
changeset
|
333 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
|
334 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
|
335 |
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
336 |
347
537de0300510
Remove the 'outgoing' wrapper, and use the Mercurial infrastructure instead.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
346
diff
changeset
|
337 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
|
338 """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
|
339 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
|
340 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
|
341 |
342
76c833526fbc
Use fallbacks in the wrappers for Subversion support, instead of prefixes.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
341
diff
changeset
|
342 # 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
|
343 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
|
344 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
|
345 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
|
346 try: |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
347 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
|
348 if not have_replay: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
349 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
|
350 |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
351 svn = source.svn |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
352 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
|
353 |
974
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
354 stopat_rev = util.parse_revnum(svn, checkout) |
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
355 |
1005
5bba4d1becde
layouts: refactor layout loading based on config into function
David Schleimer <dschleimer@fb.com>
parents:
1004
diff
changeset
|
356 layout = layouts.detect.layout_from_config(repo.ui, allow_auto=True) |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
357 if layout == 'auto': |
1004
b2d89ba6b871
layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
999
diff
changeset
|
358 layout = layouts.detect.layout_from_subversion(svn, |
b2d89ba6b871
layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
999
diff
changeset
|
359 (stopat_rev or None), |
b2d89ba6b871
layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
999
diff
changeset
|
360 repo.ui) |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
361 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
|
362 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
363 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
|
364 if branch: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
365 if layout != 'single': |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
366 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
|
367 'standard directory layout') |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
368 raise hgutil.Abort(msg) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
369 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
370 meta.branchmap['default'] = branch |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
371 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
372 ui = repo.ui |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
373 start = meta.revmap.youngest |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
374 origrevcount = len(meta.revmap) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
375 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
376 if start <= 0: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
377 # we are initializing a new repository |
974
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
378 start = util.parse_revnum(svn, repo.ui.config('hgsubversion', |
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
379 'startrev', 0)) |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
380 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
381 if start > 0: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
382 if layout == 'standard': |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
383 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
|
384 'supported for single-directory clones.') |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
385 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
|
386 % start) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
387 # 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
|
388 start -= 1 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
389 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
390 # 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
|
391 if start < 0: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
392 start = 0 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
393 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
394 skiprevs = repo.ui.configlist('hgsubversion', 'unsafeskip', '') |
974
336f4bce479a
consolidate revision parsing
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
946
diff
changeset
|
395 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
|
396 |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
397 oldrevisions = len(meta.revmap) |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
398 if stopat_rev: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
399 total = stopat_rev - start |
651
827547493112
clone: allow specifying a start revision.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
647
diff
changeset
|
400 else: |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
401 total = svn.HEAD - start |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
402 lastpulled = None |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
403 |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
404 try: |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
405 # start converting revisions |
787
4bbc6bf947f5
replay: fetch full revision at most once per run (issue252)
Patrick Mezard <pmezard@gmail.com>
parents:
783
diff
changeset
|
406 firstrun = True |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
407 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
|
408 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
|
409 (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
|
410 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
|
411 lastpulled = r.revnum |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
412 continue |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
413 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
|
414 # got a 502? Try more than once! |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
415 tries = 0 |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
416 converted = False |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
417 while not converted: |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
418 try: |
561
312c8c98eeff
pull: handle commits without any commit message
Augie Fackler <durin42@gmail.com>
parents:
560
diff
changeset
|
419 msg = '' |
312c8c98eeff
pull: handle commits without any commit message
Augie Fackler <durin42@gmail.com>
parents:
560
diff
changeset
|
420 if r.message: |
312c8c98eeff
pull: handle commits without any commit message
Augie Fackler <durin42@gmail.com>
parents:
560
diff
changeset
|
421 msg = r.message.strip() |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
422 if not msg: |
769
cc1d4aa3ba41
configurable substitution for empty commit message (fixes #195)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
751
diff
changeset
|
423 msg = util.default_commit_msg(ui) |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
424 else: |
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
425 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
|
426 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
|
427 w = ui.termwidth() |
ec52205e5ed1
pull: handle change in termwidth() api from hg change c52c629ce19e
Augie Fackler <durin42@gmail.com>
parents:
748
diff
changeset
|
428 else: |
ec52205e5ed1
pull: handle change in termwidth() api from hg change c52c629ce19e
Augie Fackler <durin42@gmail.com>
parents:
748
diff
changeset
|
429 w = hgutil.termwidth() |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
430 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
|
431 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
|
432 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
|
433 |
444
8c545dcad7b1
wrappers: save tbdelta in one place for both stupid and replay
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
440
diff
changeset
|
434 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
|
435 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
|
436 firstrun) |
520
5a5b90a6d522
svnmeta: internalize tags delta
Patrick Mezard <pmezard@gmail.com>
parents:
507
diff
changeset
|
437 meta.committags(r, close) |
432
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
438 for branch, parent in close.iteritems(): |
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
439 if parent in (None, node.nullid): |
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
440 continue |
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
441 meta.delbranch(branch, parent, r) |
4bf90f8c9b7b
consolidate metadata calls from stupid and replay code
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
431
diff
changeset
|
442 |
418
92beeefeaf93
save metadata from one place
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
416
diff
changeset
|
443 meta.save() |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
444 converted = True |
787
4bbc6bf947f5
replay: fetch full revision at most once per run (issue252)
Patrick Mezard <pmezard@gmail.com>
parents:
783
diff
changeset
|
445 firstrun = False |
431
612b8d753549
inline describe_revision(), use custom termwidth
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
419
diff
changeset
|
446 |
837
805ef27fbcbe
hgsubversion/*.py: add space after comment symbol #
Yonggang Luo <luoyonggang@gmail.com>
parents:
821
diff
changeset
|
447 except svnwrap.SubversionRepoCanNotReplay, e: # pragma: no cover |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
448 ui.status('%s\n' % e.message) |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
449 stupidmod.print_your_svn_is_old_message(ui) |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
450 have_replay = False |
837
805ef27fbcbe
hgsubversion/*.py: add space after comment symbol #
Yonggang Luo <luoyonggang@gmail.com>
parents:
821
diff
changeset
|
451 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
|
452 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
|
453 and '502' in str(e) |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
454 and tries < 3): |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
455 tries += 1 |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
456 ui.status('Got a 502, retrying (%s)\n' % tries) |
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
457 else: |
705
385213d2e2da
pull: reveal the handled SubversionException to --traceback.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
701
diff
changeset
|
458 ui.traceback() |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
459 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
|
460 |
82bbb3428684
pull: save the last pulled revision *after* converting revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
980
diff
changeset
|
461 lastpulled = r.revnum |
82bbb3428684
pull: save the last pulled revision *after* converting revisions
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
980
diff
changeset
|
462 |
390
afe93f14a361
wrappers: Python 2.4 compat.
Augie Fackler <durin42@gmail.com>
parents:
367
diff
changeset
|
463 except KeyboardInterrupt: |
895
5b9f17e34126
don't suppress KeyboardInterrupt exception tracebacks
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
876
diff
changeset
|
464 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
|
465 finally: |
927
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
466 if total is not None: |
3271fa883f34
wrappers: ensure all pull() code path reset the encoding
Patrick Mezard <patrick@mezard.eu>
parents:
926
diff
changeset
|
467 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
|
468 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
|
469 |
821
f28e0f54a6ef
svnmeta: store youngest revision pulled from subversion
Augie Fackler <durin42@gmail.com>
parents:
819
diff
changeset
|
470 if lastpulled is not None: |
f28e0f54a6ef
svnmeta: store youngest revision pulled from subversion
Augie Fackler <durin42@gmail.com>
parents:
819
diff
changeset
|
471 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
|
472 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
|
473 |
283
521d9c1bb11d
Implement -u/--update support when pulling.
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
474 if revisions == 0: |
521d9c1bb11d
Implement -u/--update support when pulling.
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
475 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
|
476 return 0 |
283
521d9c1bb11d
Implement -u/--update support when pulling.
Martijn Pieters <mj@zopatista.com>
parents:
278
diff
changeset
|
477 else: |
341
cfbd0e563af9
wrappers: remove unused clone() function.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
478 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
|
479 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
480 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
|
481 """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
|
482 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
483 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
|
484 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
|
485 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
|
486 '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
|
487 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
488 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
|
489 """ |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
490 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
|
491 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
|
492 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
|
493 """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
|
494 """ |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
495 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
|
496 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
|
497 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
|
498 meta = repo.svnmeta() |
416
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
499 hashes = meta.revmap.hashes() |
cd6317fe70be
invert the svnmeta/editor relationship
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
415
diff
changeset
|
500 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
|
501 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
|
502 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
|
503 return 0 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
504 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
|
505 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
|
506 return 0 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
507 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
|
508 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
|
509 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
|
510 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
|
511 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
|
512 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
|
513 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
|
514 n = c.node() |
406
e360558ba65f
add a function to generate svn_commit_hashes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
405
diff
changeset
|
515 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
|
516 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
|
517 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
|
518 break |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
519 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
|
520 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
|
521 return 0 |
112d57bb736e
rebase: moved to wrappers, now a wrapper around rebase triggered with --svn.
Augie Fackler <durin42@gmail.com>
parents:
263
diff
changeset
|
522 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
|
523 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
|
524 extrafn=extrafn) |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
525 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
526 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
527 optionmap = { |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
528 'tagpaths': ('hgsubversion', 'tagpaths'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
529 'authors': ('hgsubversion', 'authormap'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
530 'filemap': ('hgsubversion', 'filemap'), |
574
8e025a6f0db4
add basic branchmap functionality, to rename branches
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
561
diff
changeset
|
531 'branchmap': ('hgsubversion', 'branchmap'), |
729 | 532 'tagmap': ('hgsubversion', 'tagmap'), |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
533 'stupid': ('hgsubversion', 'stupid'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
534 'defaulthost': ('hgsubversion', 'defaulthost'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
535 'defaultauthors': ('hgsubversion', 'defaultauthors'), |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
536 'usebranchnames': ('hgsubversion', 'usebranchnames'), |
499
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
466
diff
changeset
|
537 'layout': ('hgsubversion', 'layout'), |
651
827547493112
clone: allow specifying a start revision.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
647
diff
changeset
|
538 'startrev': ('hgsubversion', 'startrev'), |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
539 } |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
540 |
499
1fd3cfa47c5e
Support for single-directory clones.
Augie Fackler <durin42@gmail.com>
parents:
466
diff
changeset
|
541 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
|
542 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
543 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
|
544 """ |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
545 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
|
546 %(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
|
547 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
|
548 """ |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
549 |
713
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
550 data = {} |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
551 def hgclonewrapper(orig, ui, *args, **opts): |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
552 if getattr(hg, 'peer', None): |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
553 # Since 1.9 (d976542986d2) |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
554 origsource = args[1] |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
555 else: |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
556 origsource = args[0] |
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
557 |
713
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
558 if isinstance(origsource, str): |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
559 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
|
560 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
|
561 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
|
562 else: |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
563 srcrepo = origsource |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
564 |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
565 if srcrepo.capable('subversion'): |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
566 branches = opts.pop('branch', None) |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
567 if branches: |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
568 data['branches'] = branches |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
569 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
|
570 |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
807
diff
changeset
|
571 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
|
572 |
840
88f3cda47def
wrappers: clone must return hg.clone() result (issue300, issue306)
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
821
diff
changeset
|
573 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
|
574 |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
575 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
|
576 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
|
577 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
|
578 |
713
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
579 # 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
|
580 # 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
|
581 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
|
582 orig(ui, source, dest, **opts) |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
583 hg.clone = orighgclone |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
584 |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
585 # 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
|
586 if data.get('branches'): |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
587 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
|
588 |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
589 dstrepo = data.get('dstrepo') |
69c0e7c4faf9
clone: call the wrapped function (fixes #181)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
705
diff
changeset
|
590 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
|
591 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
592 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
|
593 dst = dstrepo.local() |
930
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
594 if isinstance(dst, bool): |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
595 # Apparently <= hg@1.9 |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
596 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
|
597 else: |
5bacb9c63e3e
Fix more peer breakage with old hg versions
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
598 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
|
599 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
|
600 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
|
601 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
|
602 config.pop(name, None) |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
603 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
604 if config: |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
605 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
|
606 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
|
607 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
608 |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
609 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
|
610 """ |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
611 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
|
612 %(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
|
613 """ |
701
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
614 |
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
615 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
|
616 if branch: |
3b8088de027d
clone: replace the --singlebranch with overloading for --branch
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
693
diff
changeset
|
617 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
|
618 |
402
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
619 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
|
620 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
|
621 if isinstance(repo, str): |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
622 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
|
623 else: |
d453cf1aafa3
uisetup: move clone and push/pull wrappers to wrappers module
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
390
diff
changeset
|
624 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
|
625 return orig(ui, repo, *args, **opts) |