rebase: fix pull --rev options clashing with --rebase (
issue3619)
Rebase also have a plain `--rev` option used to select the rebase set (as
`--base` or `--source` would). But the content of the --rev option was intended
for the remote repo and is irrelevant for the local rebase operation. We expect
`hg pull --rebase` to stick with the default behavior here:
hg rebase --base . --dest tip(branch(.))
The `rev` option is dropped from the option passed to rebase.
--- a/hgext/rebase.py Wed Nov 28 17:53:52 2012 -0600
+++ b/hgext/rebase.py Thu Nov 29 16:37:15 2012 +0100
@@ -706,6 +706,10 @@
commands.postincoming = origpostincoming
revspostpull = len(repo)
if revspostpull > revsprepull:
+ # --rev option from pull conflict with rebase own --rev
+ # dropping it
+ if 'rev' in opts:
+ del opts['rev']
rebase(ui, repo, **opts)
branch = repo[None].branch()
dest = repo[branch].rev()
--- a/tests/test-rebase-pull.t Wed Nov 28 17:53:52 2012 -0600
+++ b/tests/test-rebase-pull.t Thu Nov 29 16:37:15 2012 +0100
@@ -114,3 +114,55 @@
|
$ cd ..
+
+pull --rebase works when a specific revision is pulled (issue3619)
+
+ $ cd a
+ $ hg tglog
+ @ 2: 'R1'
+ |
+ o 1: 'C2'
+ |
+ o 0: 'C1'
+
+ $ echo R2 > R2
+ $ hg ci -Am R2
+ adding R2
+ $ echo R3 > R3
+ $ hg ci -Am R3
+ adding R3
+ $ cd ../c
+ $ hg tglog
+ o 2: 'R1'
+ |
+ @ 1: 'C2'
+ |
+ o 0: 'C1'
+
+ $ echo L1 > L1
+ $ hg ci -Am L1
+ adding L1
+ created new head
+ $ hg pull --rev tip --rebase
+ pulling from $TESTTMP/a
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 2 changesets with 2 changes to 2 files
+ saved backup bundle to $TESTTMP/c/.hg/strip-backup/ff8d69a621f9-backup.hg (glob)
+ $ hg tglog
+ @ 5: 'L1'
+ |
+ o 4: 'R3'
+ |
+ o 3: 'R2'
+ |
+ o 2: 'R1'
+ |
+ o 1: 'C2'
+ |
+ o 0: 'C1'
+
+
+