--- 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:
--- 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
--- 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))
--- 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)
--- 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'")])
--- 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;
--- 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
--- 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
Binary file tests/bundles/issue4041.hg has changed
--- 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
--- 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 ..
--- 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 [<changectx e31216eec445>]
+ 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
--- 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