--- a/mercurial/context.py Sun May 06 14:15:17 2012 -0500
+++ b/mercurial/context.py Sun May 06 14:20:53 2012 -0500
@@ -645,9 +645,16 @@
# the easy case: no (relevant) renames
if fc2.path() == self.path() and self.path() in actx:
return actx[self.path()]
- acache = {}
+
+ # the next easiest cases: unambiguous predecessor (name trumps
+ # history)
+ if self.path() in actx and fc2.path() not in actx:
+ return actx[self.path()]
+ if fc2.path() in actx and self.path() not in actx:
+ return actx[fc2.path()]
# prime the ancestor cache for the working directory
+ acache = {}
for c in (self, fc2):
if c._filerev is None:
pl = [(n.path(), n.filenode()) for n in c.parents()]
--- a/tests/test-graft.t Sun May 06 14:15:17 2012 -0500
+++ b/tests/test-graft.t Sun May 06 14:20:53 2012 -0500
@@ -72,28 +72,23 @@
# HG changeset patch
# User foo
# Date 0 0
- # Node ID d2e44c99fd3f31c176ea4efb9eca9f6306c81756
+ # Node ID ef0ef43d49e79e81ddafdc7997401ba0041efc82
# Parent 68795b066622ca79a25816a662041d8f78f3cd9e
2
diff --git a/a b/b
rename from a
rename to b
- --- a/a
- +++ b/b
- @@ -1,1 +1,1 @@
- -a
- +b
Look for extra:source
$ hg log --debug -r tip
- changeset: 7:d2e44c99fd3f31c176ea4efb9eca9f6306c81756
+ changeset: 7:ef0ef43d49e79e81ddafdc7997401ba0041efc82
tag: tip
phase: draft
parent: 0:68795b066622ca79a25816a662041d8f78f3cd9e
parent: -1:0000000000000000000000000000000000000000
- manifest: 7:5d59766436fd8fbcd38e7bebef0f6eaf3eebe637
+ manifest: 7:e59b6b228f9cbf9903d5e9abf996e083a1f533eb
user: foo
date: Thu Jan 01 00:00:00 1970 +0000
files+: b
@@ -128,16 +123,20 @@
checking for directory renames
resolving manifests
overwrite: False, partial: False
- ancestor: 68795b066622, local: d2e44c99fd3f+, remote: 5d205f8b35b6
+ ancestor: 68795b066622, local: ef0ef43d49e7+, remote: 5d205f8b35b6
b: local copied/moved to a -> m
preserving b for resolve of b
updating: b 1/1 files (100.00%)
- graft for revision 1 is empty
+ picked tool 'internal:merge' for b (binary False symlink False)
+ merging b and a to b
+ my b@ef0ef43d49e7+ other a@5d205f8b35b6 ancestor a@68795b066622
+ premerge successful
+ b
grafting revision 5
searching for copies back to rev 1
resolving manifests
overwrite: False, partial: False
- ancestor: 4c60f11aa304, local: d2e44c99fd3f+, remote: 97f8bfe72746
+ ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746
e: remote is newer -> g
updating: e 1/1 files (100.00%)
getting e
@@ -146,7 +145,7 @@
searching for copies back to rev 1
resolving manifests
overwrite: False, partial: False
- ancestor: 4c60f11aa304, local: 839a7e8fcf80+, remote: 9c233e8e184d
+ ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d
e: versions differ -> m
d: remote is newer -> g
preserving e for resolve of e
@@ -155,7 +154,7 @@
updating: e 2/2 files (100.00%)
picked tool 'internal:merge' for e (binary False symlink False)
merging e
- my e@839a7e8fcf80+ other e@9c233e8e184d ancestor e@68795b066622
+ my e@1905859650ec+ other e@9c233e8e184d ancestor e@68795b066622
warning: conflicts during merge.
merging e incomplete! (edit conflicts, then use 'hg resolve --mark')
abort: unresolved conflicts, can't continue
@@ -201,11 +200,13 @@
View graph:
$ hg --config extensions.graphlog= log -G --template '{author}@{rev}.{phase}: {desc}\n'
- @ test@10.draft: 3
+ @ test@11.draft: 3
+ |
+ o test@10.draft: 4
|
- o test@9.draft: 4
+ o test@9.draft: 5
|
- o test@8.draft: 5
+ o bar@8.draft: 1
|
o foo@7.draft: 2
|
@@ -233,17 +234,17 @@
grafting revision 7
$ hg log -r 7 --template '{rev}:{node}\n'
- 7:d2e44c99fd3f31c176ea4efb9eca9f6306c81756
+ 7:ef0ef43d49e79e81ddafdc7997401ba0041efc82
$ hg log -r 2 --template '{rev}:{node}\n'
2:5c095ad7e90f871700f02dd1fa5012cb4498a2d4
$ hg log --debug -r tip
- changeset: 12:95adbe5de6b10f376b699ece9ed5a57cd7b4b0f6
+ changeset: 13:9db0f28fd3747e92c57d015f53b5593aeec53c2d
tag: tip
phase: draft
- parent: 11:b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f
+ parent: 12:b592ea63bb0c19a6c5c44685ee29a2284f9f1b8f
parent: -1:0000000000000000000000000000000000000000
- manifest: 12:9944044f82a462bbaccc9bdf7e0ac5b811db7d1b
+ manifest: 13:dc313617b8c32457c0d589e0dbbedfe71f3cd637
user: foo
date: Thu Jan 01 00:00:00 1970 +0000
files+: b
@@ -261,7 +262,7 @@
[255]
Disallow grafting already grafted csets with the same origin onto each other
- $ hg up -q 12
+ $ hg up -q 13
$ hg graft 2
skipping already grafted revision 2
[255]
@@ -274,5 +275,5 @@
skipping already grafted revision 2
[255]
$ hg graft tip
- skipping already grafted revision 12 (same origin 2)
+ skipping already grafted revision 13 (same origin 2)
[255]