changeset 7786:92455c1d6f83

rebase: pull --rebase updates if there is nothing to rebase
author Stefano Tortarolo <stefano.tortarolo@gmail.com>
date Sun, 18 Jan 2009 19:59:51 +0100
parents 660c8dd44060
children b8d750daadde
files hgext/rebase.py tests/test-rebase-pull tests/test-rebase-pull.out
diffstat 3 files changed, 42 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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
+|