--- a/hgext/rebase.py Tue Feb 10 22:47:38 2009 +0100
+++ b/hgext/rebase.py Sun Jan 18 19:59:51 2009 +0100
@@ -400,7 +400,9 @@
'Call rebase after pull if the latter has been invoked with --rebase'
if opts.get('rebase'):
if opts.get('update'):
- raise util.Abort(_('--update and --rebase are not compatible'))
+ del opts.get['update']
+ ui.debug(_('--update and --rebase are not compatible, ignoring '
+ 'the update flag\n'))
cmdutil.bail_if_changed(repo)
revsprepull = len(repo)
@@ -408,6 +410,11 @@
revspostpull = len(repo)
if revspostpull > revsprepull:
rebase(ui, repo, **opts)
+ branch = repo[None].branch()
+ dest = repo[branch].rev()
+ if dest != repo['.'].rev():
+ # there was nothing to rebase we force an update
+ merge.update(repo, dest, False, False, False)
else:
orig(ui, repo, *args, **opts)
--- a/tests/test-rebase-pull Tue Feb 10 22:47:38 2009 +0100
+++ b/tests/test-rebase-pull Sun Jan 18 19:59:51 2009 +0100
@@ -25,6 +25,9 @@
cd ..
hg clone a b
+# This is needed to test pull --rebase
+hg clone a c
+
cd b
addcommit "L1" 2
@@ -44,7 +47,15 @@
hg pull --rebase 2>&1 | sed 's/\(pulling from \).*/\1/'
echo
-echo "% Invoke pull --rebase with --update"
-hg pull --rebase --update
+echo "% Invoke pull --rebase and nothing to rebase"
+cd ../c
+hg pull --rebase 2>&1 | sed 's/\(pulling from \).*/\1/'
+hg glog --template '{rev}\n' -l 1
+
+echo
+echo "% pull --rebase doesn't update if nothing has been pulled"
+hg up 1
+hg pull --rebase 2>&1 | sed 's/\(pulling from \).*/\1/'
+hg glog --template '{rev}\n' -l 1
exit 0
--- a/tests/test-rebase-pull.out Tue Feb 10 22:47:38 2009 +0100
+++ b/tests/test-rebase-pull.out Sun Jan 18 19:59:51 2009 +0100
@@ -1,3 +1,5 @@
+updating working directory
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
updating working directory
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -30,5 +32,22 @@
searching for changes
no changes found
-% Invoke pull --rebase with --update
-abort: --update and --rebase are not compatible
+% Invoke pull --rebase and nothing to rebase
+pulling from
+searching for changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 1 changes to 1 files
+(run 'hg update' to get a working copy)
+nothing to rebase
+@ 2
+|
+
+% pull --rebase doesn't update if nothing has been pulled
+0 files updated, 0 files merged, 1 files removed, 0 files unresolved
+pulling from
+searching for changes
+no changes found
+o 2
+|