# HG changeset patch # User Matt Mackall # Date 1383343443 18000 # Node ID d825e4025e39d1c39db943cdc89818abd0a87c27 # Parent 1184edaead7ac68b51ff1d5fdf4ed2913c3ac7bf# Parent bd88e3cd1f50ce7421d729d5071c3ef3e70bca28 merge with i18n diff -r bd88e3cd1f50 -r d825e4025e39 contrib/check-code.py --- a/contrib/check-code.py Fri Nov 01 11:04:48 2013 -0200 +++ b/contrib/check-code.py Fri Nov 01 17:04:03 2013 -0500 @@ -426,7 +426,7 @@ fp.close() if "no-" "check-code" in pre: if debug: - print "Skipping %s for %s it has no-" " check-code" % ( + print "Skipping %s for %s it has no-" "check-code" % ( name, f) break for p, r in filters: diff -r bd88e3cd1f50 -r d825e4025e39 hgext/histedit.py --- a/hgext/histedit.py Fri Nov 01 11:04:48 2013 -0200 +++ b/hgext/histedit.py Fri Nov 01 17:04:03 2013 -0500 @@ -471,6 +471,10 @@ instead of --outgoing to specify edit target revision exactly in such ambiguous situation. See :hg:`help revsets` for detail about selecting revisions. + + Returns 0 on success, 1 if user intervention is required (not only + for intentional "edit" command, but also for resolving unexpected + conflicts). """ # TODO only abort if we try and histedit mq patches, not just # blanket if mq patches are applied somewhere diff -r bd88e3cd1f50 -r d825e4025e39 hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py Fri Nov 01 11:04:48 2013 -0200 +++ b/hgext/largefiles/overrides.py Fri Nov 01 17:04:03 2013 -0500 @@ -387,8 +387,8 @@ # the second parent lfile = splitstandin standin = f - msg = _('%s has been turned into a largefile\n' - 'use (l)argefile or keep as (n)ormal file?' + msg = _('remote turned local normal file %s into a largefile\n' + 'use (l)argefile or keep (n)ormal file?' '$$ &Largefile $$ &Normal file') % lfile if repo.ui.promptchoice(msg, 0) == 0: processed.append((lfile, "r", None, msg)) @@ -401,8 +401,8 @@ # the second parent standin = lfutil.standin(f) lfile = f - msg = _('%s has been turned into a normal file\n' - 'keep as (l)argefile or use (n)ormal file?' + msg = _('remote turned local largefile %s into a normal file\n' + 'keep (l)argefile or use (n)ormal file?' '$$ &Largefile $$ &Normal file') % lfile if repo.ui.promptchoice(msg, 0) == 0: processed.append((lfile, "r", None, msg)) diff -r bd88e3cd1f50 -r d825e4025e39 hgext/rebase.py --- a/hgext/rebase.py Fri Nov 01 11:04:48 2013 -0200 +++ b/hgext/rebase.py Fri Nov 01 17:04:03 2013 -0500 @@ -128,7 +128,8 @@ If a rebase is interrupted to manually resolve a merge, it can be continued with --continue/-c or aborted with --abort/-a. - Returns 0 on success, 1 if nothing to rebase. + Returns 0 on success, 1 if nothing to rebase or there are + unresolved conflicts. """ originalwd = target = None activebookmark = None @@ -447,9 +448,44 @@ repo.ui.debug(" already in target\n") repo.dirstate.write() repo.ui.debug(" merge against %d:%s\n" % (repo[rev].rev(), repo[rev])) - base = None - if repo[rev].rev() != repo[min(state)].rev(): + if repo[rev].rev() == repo[min(state)].rev(): + # Case (1) initial changeset of a non-detaching rebase. + # Let the merge mechanism find the base itself. + base = None + elif not repo[rev].p2(): + # Case (2) detaching the node with a single parent, use this parent base = repo[rev].p1().node() + else: + # In case of merge, we need to pick the right parent as merge base. + # + # Imagine we have: + # - M: currently rebase revision in this step + # - A: one parent of M + # - B: second parent of M + # - D: destination of this merge step (p1 var) + # + # If we are rebasing on D, D is the successors of A or B. The right + # merge base is the one D succeed to. We pretend it is B for the rest + # of this comment + # + # If we pick B as the base, the merge involves: + # - changes from B to M (actual changeset payload) + # - changes from B to D (induced by rebase) as D is a rebased + # version of B) + # Which exactly represent the rebase operation. + # + # If we pick the A as the base, the merge involves + # - changes from A to M (actual changeset payload) + # - changes from A to D (with include changes between unrelated A and B + # plus changes induced by rebase) + # Which does not represent anything sensible and creates a lot of + # conflicts. + for p in repo[rev].parents(): + if state.get(p.rev()) == repo[p1].rev(): + base = p.node() + break + if base is not None: + repo.ui.debug(" detach base %d:%s\n" % (repo[base].rev(), repo[base])) # When collapsing in-place, the parent is the common ancestor, we # have to allow merging with it. return merge.update(repo, rev, True, True, False, base, collapse) diff -r bd88e3cd1f50 -r d825e4025e39 hgext/shelve.py --- a/hgext/shelve.py Fri Nov 01 11:04:48 2013 -0200 +++ b/hgext/shelve.py Fri Nov 01 17:04:03 2013 -0500 @@ -66,16 +66,7 @@ except IOError, err: if err.errno != errno.ENOENT: raise - if mode[0] in 'wa': - try: - self.vfs.mkdir() - return self.vfs(self.fname, mode) - except IOError, err: - if err.errno != errno.EEXIST: - raise - elif mode[0] == 'r': - raise util.Abort(_("shelved change '%s' not found") % - self.name) + raise util.Abort(_("shelved change '%s' not found") % self.name) class shelvedstate(object): """Handle persistence during unshelving operations. @@ -358,11 +349,6 @@ finally: fp.close() -def readshelvedfiles(repo, basename): - """return the list of files touched in a shelve""" - fp = shelvedfile(repo, basename, 'files').opener() - return fp.read().split('\0') - def checkparents(repo, state): """check parent while resuming an unshelve""" if state.parents != repo.dirstate.parents(): @@ -532,7 +518,8 @@ else: basename = shelved[0] - shelvedfiles = readshelvedfiles(repo, basename) + if not shelvedfile(repo, basename, 'files').exists(): + raise util.Abort(_("shelved change '%s' not found") % basename) wlock = lock = tr = None try: @@ -704,5 +691,6 @@ def extsetup(ui): cmdutil.unfinishedstates.append( - [shelvedstate._filename, False, True, _('unshelve already in progress'), + [shelvedstate._filename, False, False, + _('unshelve already in progress'), _("use 'hg unshelve --continue' or 'hg unshelve --abort'")]) diff -r bd88e3cd1f50 -r d825e4025e39 mercurial/bdiff.c --- a/mercurial/bdiff.c Fri Nov 01 11:04:48 2013 -0200 +++ b/mercurial/bdiff.c Fri Nov 01 17:04:03 2013 -0500 @@ -303,6 +303,8 @@ struct hunk l, *h; int an, bn, count, pos = 0; + l.next = NULL; + if (!PyArg_ParseTuple(args, "SS:bdiff", &sa, &sb)) return NULL; @@ -312,7 +314,6 @@ if (!a || !b) goto nomem; - l.next = NULL; count = diff(a, an, b, bn, &l); if (count < 0) goto nomem; @@ -344,6 +345,8 @@ Py_ssize_t len = 0, la, lb; PyThreadState *_save; + l.next = NULL; + if (!PyArg_ParseTuple(args, "s#s#:bdiff", &sa, &la, &sb, &lb)) return NULL; @@ -358,7 +361,6 @@ if (!al || !bl) goto nomem; - l.next = NULL; count = diff(al, an, bl, bn, &l); if (count < 0) goto nomem; diff -r bd88e3cd1f50 -r d825e4025e39 mercurial/help/dates.txt --- a/mercurial/help/dates.txt Fri Nov 01 11:04:48 2013 -0200 +++ b/mercurial/help/dates.txt Fri Nov 01 17:04:03 2013 -0500 @@ -24,7 +24,7 @@ Lastly, there is Mercurial's internal format: -- ``1165432709 0`` (Wed Dec 6 13:18:29 2006 UTC) +- ``1165411109 0`` (Wed Dec 6 13:18:29 2006 UTC) This is the internal representation format for dates. The first number is the number of seconds since the epoch (1970-01-01 00:00 UTC). The diff -r bd88e3cd1f50 -r d825e4025e39 mercurial/patch.py --- a/mercurial/patch.py Fri Nov 01 11:04:48 2013 -0200 +++ b/mercurial/patch.py Fri Nov 01 17:04:03 2013 -0500 @@ -1703,7 +1703,7 @@ tn = getfilectx(f, ctx2).data() a, b = f, f if opts.git or losedatafn: - if f in added: + if f in added or (f in modified and to is None): mode = gitmode[ctx2.flags(f)] if f in copy or f in copyto: if opts.git: @@ -1739,7 +1739,7 @@ if not opts.git and not tn: # regular diffs cannot represent new empty file losedatafn(f) - elif f in removed: + elif f in removed or (f in modified and tn is None): if opts.git: # have we already reported a copy above? if ((f in copy and copy[f] in added diff -r bd88e3cd1f50 -r d825e4025e39 tests/bundles/issue4041.hg Binary file tests/bundles/issue4041.hg has changed diff -r bd88e3cd1f50 -r d825e4025e39 tests/test-git-export.t --- a/tests/test-git-export.t Fri Nov 01 11:04:48 2013 -0200 +++ b/tests/test-git-export.t Fri Nov 01 17:04:03 2013 -0500 @@ -360,3 +360,23 @@ +foo $ hg ci -m 'add filename with spaces' +Additions should be properly marked even in the middle of a merge + + $ hg up -r -2 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ echo "New File" >> inmerge + $ hg add inmerge + $ hg ci -m "file in merge" + created new head + $ hg up 23 + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + $ hg merge + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ hg diff -g + diff --git a/inmerge b/inmerge + new file mode 100644 + --- /dev/null + +++ b/inmerge + @@ -0,0 +1,1 @@ + +New File diff -r bd88e3cd1f50 -r d825e4025e39 tests/test-issue3084.t --- a/tests/test-issue3084.t Fri Nov 01 11:04:48 2013 -0200 +++ b/tests/test-issue3084.t Fri Nov 01 17:04:03 2013 -0500 @@ -28,8 +28,8 @@ Normal file in the working copy, keeping the normal version: $ echo "n" | hg merge --config ui.interactive=Yes - foo has been turned into a largefile - use (l)argefile or keep as (n)ormal file? 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + remote turned local normal file foo into a largefile + use (l)argefile or keep (n)ormal file? 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) getting changed largefiles 0 largefiles updated, 0 removed @@ -42,8 +42,8 @@ $ hg update -q -C $ echo "l" | hg merge --config ui.interactive=Yes - foo has been turned into a largefile - use (l)argefile or keep as (n)ormal file? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + remote turned local normal file foo into a largefile + use (l)argefile or keep (n)ormal file? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) getting changed largefiles 1 largefiles updated, 0 removed @@ -70,8 +70,8 @@ $ hg update -q -C -r 1 $ echo "n" | hg merge --config ui.interactive=Yes - foo has been turned into a normal file - keep as (l)argefile or use (n)ormal file? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + remote turned local largefile foo into a normal file + keep (l)argefile or use (n)ormal file? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) getting changed largefiles 0 largefiles updated, 0 removed @@ -98,8 +98,8 @@ $ hg update -q -C -r 1 $ echo "l" | hg merge --config ui.interactive=Yes - foo has been turned into a normal file - keep as (l)argefile or use (n)ormal file? 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + remote turned local largefile foo into a normal file + keep (l)argefile or use (n)ormal file? 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) getting changed largefiles 1 largefiles updated, 0 removed @@ -137,3 +137,221 @@ large $ cd .. + + +Systematic testing of merges involving largefiles: + +Ancestor: normal Parent: normal= Parent: large result: large +Ancestor: normal Parent: normal2 Parent: large result: ? +Ancestor: large Parent: large= Parent: normal result: normal +Ancestor: large Parent: large2 Parent: normal result: ? + +All cases should try merging both ways. +"=" means same file content. + +Prepare test repo: + + $ hg init merges + $ cd merges + $ touch f1 + $ hg ci -Aqm "0-root" + +ancestor is "normal": + $ echo normal > f + $ hg ci -Aqm "1-normal-ancestor" + $ touch f2 + $ hg ci -Aqm "2-normal-unchanged" + $ hg tag -l "normal=" + $ echo normal2 > f + $ hg ci -m "3-normal2" + $ hg tag -l "normal2" + $ hg up -qr 1 + $ hg rm f + $ echo large > f + $ hg add --large f + $ hg ci -qm "4-normal-to-large" + $ hg tag -l "large" + + $ hg up -qr null + +ancestor is "large": + $ echo large > f + $ hg add --large f + $ hg ci -qm "5-large-ancestor" + $ touch f2 + $ hg ci -Aqm "6-large-unchanged" + $ hg tag -l "large=" + $ echo large2 > f + $ hg ci -m "7-large2" + $ hg tag -l "large2" + $ hg up -qr 5 + $ hg rm f + $ echo normal > f + $ hg ci -qAm "8-large-to-normal" + $ hg tag -l "normal" + +Ancestor: normal Parent: normal= Parent: large result: large + + $ hg up -Cqr normal= + $ hg merge -r large + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large + +swap + + $ hg up -Cqr large + $ hg merge -r normal= + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + large + +Ancestor: normal Parent: normal2 Parent: large result: ? +(annoying extra prompt ... but it do not do any serious harm) + + $ hg up -Cqr normal2 + $ hg merge -r large + local changed f which remote deleted + use (c)hanged version or (d)elete? c + remote turned local normal file f into a largefile + use (l)argefile or keep (n)ormal file? l + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large + + $ hg up -Cqr normal2 + $ ( echo c; echo n ) | hg merge -r large --config ui.interactive=Yes + local changed f which remote deleted + use (c)hanged version or (d)elete? remote turned local normal file f into a largefile + use (l)argefile or keep (n)ormal file? 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + normal2 + + $ hg up -Cqr normal2 + $ echo d | hg merge -r large --config ui.interactive=Yes + local changed f which remote deleted + use (c)hanged version or (d)elete? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large + +swap + + $ hg up -Cqr large + $ hg merge -r normal2 + remote changed f which local deleted + use (c)hanged version or leave (d)eleted? c + remote turned local largefile f into a normal file + keep (l)argefile or use (n)ormal file? l + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large + + $ hg up -Cqr large + $ ( echo c; echo n ) | hg merge -r normal2 --config ui.interactive=Yes + remote changed f which local deleted + use (c)hanged version or leave (d)eleted? remote turned local largefile f into a normal file + keep (l)argefile or use (n)ormal file? 2 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + normal2 + + $ hg up -Cqr large + $ echo d | hg merge -r normal2 --config ui.interactive=Yes + remote changed f which local deleted + use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + large + +Ancestor: large Parent: large= Parent: normal result: normal + + $ hg up -Cqr large= + $ hg merge -r normal + 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + normal + +swap + + $ hg up -Cqr normal + $ hg merge -r large= + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ cat f + normal + +Ancestor: large Parent: large2 Parent: normal result: ? +(annoying extra prompt ... but it do not do any serious harm) + + $ hg up -Cqr large2 + $ hg merge -r normal + local changed .hglf/f which remote deleted + use (c)hanged version or (d)elete? c + remote turned local largefile f into a normal file + keep (l)argefile or use (n)ormal file? l + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large2 + + $ hg up -Cqr large2 + $ echo d | hg merge -r normal --config ui.interactive=Yes + local changed .hglf/f which remote deleted + use (c)hanged version or (d)elete? 1 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed + $ cat f + normal + +swap + + $ hg up -Cqr normal + $ hg merge -r large2 + remote changed .hglf/f which local deleted + use (c)hanged version or leave (d)eleted? c + remote turned local normal file f into a largefile + use (l)argefile or keep (n)ormal file? l + 2 files updated, 0 files merged, 1 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + 1 largefiles updated, 0 removed + $ cat f + large2 + + $ hg up -Cqr normal + $ echo d | hg merge -r large2 --config ui.interactive=Yes + remote changed .hglf/f which local deleted + use (c)hanged version or leave (d)eleted? 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ cat f + normal + + $ cd .. diff -r bd88e3cd1f50 -r d825e4025e39 tests/test-rebase-conflicts.t --- a/tests/test-rebase-conflicts.t Fri Nov 01 11:04:48 2013 -0200 +++ b/tests/test-rebase-conflicts.t Fri Nov 01 17:04:03 2013 -0500 @@ -124,3 +124,184 @@ * mybook 5:d67b21408fc0 $ cd .. + +Check that the right ancestors is used while rebasing a merge (issue4041) + + $ hg clone "$TESTDIR/bundles/issue4041.hg" issue4041 + requesting all changes + adding changesets + adding manifests + adding file changes + added 11 changesets with 8 changes to 3 files (+1 heads) + updating to branch default + 2 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd issue4041 + $ hg phase --draft --force 9 + $ hg log -G + o changeset: 10:2f2496ddf49d + |\ branch: f1 + | | tag: tip + | | parent: 7:4c9fbe56a16f + | | parent: 9:e31216eec445 + | | user: szhang + | | date: Thu Sep 05 12:59:39 2013 -0400 + | | summary: merge + | | + | o changeset: 9:e31216eec445 + | | branch: f1 + | | user: szhang + | | date: Thu Sep 05 12:59:10 2013 -0400 + | | summary: more changes to f1 + | | + | o changeset: 8:8e4e2c1a07ae + | |\ branch: f1 + | | | parent: 2:4bc80088dc6b + | | | parent: 6:400110238667 + | | | user: szhang + | | | date: Thu Sep 05 12:57:59 2013 -0400 + | | | summary: bad merge + | | | + o | | changeset: 7:4c9fbe56a16f + |/ / branch: f1 + | | parent: 2:4bc80088dc6b + | | user: szhang + | | date: Thu Sep 05 12:54:00 2013 -0400 + | | summary: changed f1 + | | + | o changeset: 6:400110238667 + | | branch: f2 + | | parent: 4:12e8ec6bb010 + | | user: szhang + | | date: Tue Sep 03 13:58:02 2013 -0400 + | | summary: changed f2 on f2 + | | + | | @ changeset: 5:d79e2059b5c0 + | | | parent: 3:8a951942e016 + | | | user: szhang + | | | date: Tue Sep 03 13:57:39 2013 -0400 + | | | summary: changed f2 on default + | | | + | o | changeset: 4:12e8ec6bb010 + | |/ branch: f2 + | | user: szhang + | | date: Tue Sep 03 13:57:18 2013 -0400 + | | summary: created f2 branch + | | + | o changeset: 3:8a951942e016 + | | parent: 0:24797d4f68de + | | user: szhang + | | date: Tue Sep 03 13:57:11 2013 -0400 + | | summary: added f2.txt + | | + o | changeset: 2:4bc80088dc6b + | | branch: f1 + | | user: szhang + | | date: Tue Sep 03 13:56:20 2013 -0400 + | | summary: added f1.txt + | | + o | changeset: 1:ef53c9e6b608 + |/ branch: f1 + | user: szhang + | date: Tue Sep 03 13:55:26 2013 -0400 + | summary: created f1 branch + | + o changeset: 0:24797d4f68de + user: szhang + date: Tue Sep 03 13:55:08 2013 -0400 + summary: added default.txt + + $ hg rebase -s9 -d2 --debug # use debug to really check merge base used + rebase onto 2 starting from [] + rebasing: 9:e31216eec445 5/6 changesets (83.33%) + future parents are 2 and -1 + rebase status stored + update to 2:4bc80088dc6b + resolving manifests + branchmerge: False, force: True, partial: False + ancestor: d79e2059b5c0+, local: d79e2059b5c0+, remote: 4bc80088dc6b + f2.txt: other deleted -> r + f1.txt: remote created -> g + removing f2.txt + updating: f2.txt 1/2 files (50.00%) + getting f1.txt + updating: f1.txt 2/2 files (100.00%) + merge against 9:e31216eec445 + detach base 8:8e4e2c1a07ae + searching for copies back to rev 3 + resolving manifests + branchmerge: True, force: True, partial: False + ancestor: 8e4e2c1a07ae, local: 4bc80088dc6b+, remote: e31216eec445 + f1.txt: remote is newer -> g + getting f1.txt + updating: f1.txt 1/1 files (100.00%) + f1.txt + rebasing: 10:2f2496ddf49d 6/6 changesets (100.00%) + future parents are 11 and 7 + rebase status stored + already in target + merge against 10:2f2496ddf49d + detach base 9:e31216eec445 + searching for copies back to rev 3 + resolving manifests + branchmerge: True, force: True, partial: False + ancestor: e31216eec445, local: 19c888675e13+, remote: 2f2496ddf49d + f1.txt: remote is newer -> g + getting f1.txt + updating: f1.txt 1/1 files (100.00%) + f1.txt + rebase merging completed + update back to initial working directory parent + resolving manifests + branchmerge: False, force: False, partial: False + ancestor: 2a7f09cac94c, local: 2a7f09cac94c+, remote: d79e2059b5c0 + f1.txt: other deleted -> r + f2.txt: remote created -> g + removing f1.txt + updating: f1.txt 1/2 files (50.00%) + getting f2.txt + updating: f2.txt 2/2 files (100.00%) + 3 changesets found + list of changesets: + 4c9fbe56a16f30c0d5dcc40ec1a97bbe3325209c + e31216eec445e44352c5f01588856059466a24c9 + 2f2496ddf49d69b5ef23ad8cf9fb2e0e4faf0ac2 + bundling: 1/3 changesets (33.33%) + bundling: 2/3 changesets (66.67%) + bundling: 3/3 changesets (100.00%) + bundling: 1/3 manifests (33.33%) + bundling: 2/3 manifests (66.67%) + bundling: 3/3 manifests (100.00%) + bundling: f1.txt 1/1 files (100.00%) + saved backup bundle to $TESTTMP/issue4041/.hg/strip-backup/e31216eec445-backup.hg (glob) + 3 changesets found + list of changesets: + 4c9fbe56a16f30c0d5dcc40ec1a97bbe3325209c + 19c888675e133ab5dff84516926a65672eaf04d9 + 2a7f09cac94c7f4b73ebd5cd1a62d3b2e8e336bf + bundling: 1/3 changesets (33.33%) + bundling: 2/3 changesets (66.67%) + bundling: 3/3 changesets (100.00%) + bundling: 1/3 manifests (33.33%) + bundling: 2/3 manifests (66.67%) + bundling: 3/3 manifests (100.00%) + bundling: f1.txt 1/1 files (100.00%) + adding branch + adding changesets + changesets: 1 chunks + add changeset 4c9fbe56a16f + changesets: 2 chunks + add changeset 19c888675e13 + changesets: 3 chunks + add changeset 2a7f09cac94c + adding manifests + manifests: 1/2 chunks (50.00%) + manifests: 2/2 chunks (100.00%) + manifests: 3/2 chunks (150.00%) + adding file changes + adding f1.txt revisions + files: 1/1 chunks (100.00%) + added 2 changesets with 2 changes to 1 files + removing unknown node e31216eec445 from 1-phase boundary + invalid branchheads cache (served): tip differs + rebase completed + updating the branch cache diff -r bd88e3cd1f50 -r d825e4025e39 tests/test-shelve.t --- a/tests/test-shelve.t Fri Nov 01 11:04:48 2013 -0200 +++ b/tests/test-shelve.t Fri Nov 01 17:04:03 2013 -0500 @@ -228,6 +228,7 @@ +a +>>>>>>> other diff --git a/b.rename/b b/b.rename/b + new file mode 100644 --- /dev/null +++ b/b.rename/b @@ -0,0 +1,1 @@ @@ -239,6 +240,7 @@ @@ -1,1 +0,0 @@ -b diff --git a/c.copy b/c.copy + new file mode 100644 --- /dev/null +++ b/c.copy @@ -0,0 +1,1 @@ @@ -303,6 +305,11 @@ $ hg revert -r . a/a $ hg resolve -m a/a + $ hg commit -m 'commit while unshelve in progress' + abort: unshelve already in progress + (use 'hg unshelve --continue' or 'hg unshelve --abort') + [255] + $ hg unshelve -c unshelve of 'default' complete