# HG changeset patch # User Eric Sumner # Date 2015-02-20 21:55:01 # Node ID fbc4d550a6ab5ab81c5bef5ba160227aaf10a2b4 # Parent 4e865115566e75f938cbff9dcf081da39008a161 repair: setup hookargs when processing bundle2s addchangegroup() modifies its behavior based on the transaction source. This is incorrect for bundle2 repair files, causing rebases to abort when this option is enabled. This diff specifies the source type in the way recommended by comments in bundle2.py and adds a test to ensure that rebases with the experimental option work successfully. diff --git a/mercurial/repair.py b/mercurial/repair.py --- a/mercurial/repair.py +++ b/mercurial/repair.py @@ -181,6 +181,8 @@ def strip(ui, repo, nodelist, backup=Tru repo.ui.pushbuffer() if isinstance(gen, bundle2.unbundle20): tr = repo.transaction('strip') + tr.hookargs = {'source': 'strip', + 'url': 'bundle:' + vfs.join(chgrpfile)} try: bundle2.processbundle(repo, gen, lambda: tr) tr.close() diff --git a/tests/test-rebase-pull.t b/tests/test-rebase-pull.t --- a/tests/test-rebase-pull.t +++ b/tests/test-rebase-pull.t @@ -165,5 +165,47 @@ pull --rebase works when a specific revi | o 0: 'C1' +pull --rebase works with bundle2 turned on - + $ cd ../a + $ echo R4 > R4 + $ hg ci -Am R4 + adding R4 + $ hg tglog + @ 5: 'R4' + | + o 4: 'R3' + | + o 3: 'R2' + | + o 2: 'R1' + | + o 1: 'C2' + | + o 0: 'C1' + + $ cd ../c + $ hg pull --rebase --config experimental.bundle2-exp=True --config experimental.strip-bundle2-version=02 + pulling from $TESTTMP/a (glob) + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + rebasing 5:518d153c0ba3 "L1" + saved backup bundle to $TESTTMP/c/.hg/strip-backup/518d153c0ba3-73407f14-backup.hg (glob) + $ hg tglog + @ 6: 'L1' + | + o 5: 'R4' + | + o 4: 'R3' + | + o 3: 'R2' + | + o 2: 'R1' + | + o 1: 'C2' + | + o 0: 'C1' +