# HG changeset patch # User Stefano Tortarolo # Date 1232305191 -3600 # Node ID 92455c1d6f83483ad9a349edc6481b13dfbd4c38 # Parent 660c8dd440601875b2c69ad5bbef8734f04b2368 rebase: pull --rebase updates if there is nothing to rebase diff -r 660c8dd44060 -r 92455c1d6f83 hgext/rebase.py --- 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) diff -r 660c8dd44060 -r 92455c1d6f83 tests/test-rebase-pull --- 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 diff -r 660c8dd44060 -r 92455c1d6f83 tests/test-rebase-pull.out --- 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 +|