# HG changeset patch # User Alexis S. L. Carvalho # Date 1205658647 10800 # Node ID 90a4329a6b4af35556e5ecf74837bc9ac7b56495 # Parent 4b81eecc8aa2a7bab4f66efe5b9f3930925c31f1 filectx.ancestor: use fctx._repopath to cache filelogs (issue1035) _repopath may be different from _path for workingfilectx when there are renames involved. diff -r 4b81eecc8aa2 -r 90a4329a6b4a mercurial/context.py --- a/mercurial/context.py Sat Mar 15 12:42:41 2008 -0700 +++ b/mercurial/context.py Sun Mar 16 06:10:47 2008 -0300 @@ -190,6 +190,9 @@ elif name == '_filerev': self._filerev = self._filelog.rev(self._filenode) return self._filerev + elif name == '_repopath': + self._repopath = self._path + return self._repopath else: raise AttributeError, name @@ -404,7 +407,7 @@ pl = [(n.path(), n.filenode()) for n in c.parents()] acache[(c._path, None)] = pl - flcache = {self._path:self._filelog, fc2._path:fc2._filelog} + flcache = {self._repopath:self._filelog, fc2._repopath:fc2._filelog} def parents(vertex): if vertex in acache: return acache[vertex] diff -r 4b81eecc8aa2 -r 90a4329a6b4a tests/test-mv-cp-st-diff --- a/tests/test-mv-cp-st-diff Sat Mar 15 12:42:41 2008 -0700 +++ b/tests/test-mv-cp-st-diff Sun Mar 16 06:10:47 2008 -0300 @@ -65,3 +65,4 @@ tb "hg cp a b" "add b b1" "add a w" "single copy" tb "hg mv a b" "hg mv b c" "hg mv c d" "rename chain" tb "hg cp a b" "hg cp b c" "hg cp c d" "copy chain" +tb "add a a1" "hg mv a b" "hg mv b a" "circular rename" diff -r 4b81eecc8aa2 -r 90a4329a6b4a tests/test-mv-cp-st-diff.out --- a/tests/test-mv-cp-st-diff.out Sat Mar 15 12:42:41 2008 -0700 +++ b/tests/test-mv-cp-st-diff.out Sun Mar 16 06:10:47 2008 -0300 @@ -793,3 +793,103 @@ -5 +** circular rename ** +** add a a1 / hg mv a b / hg mv b a +- working to parent: +A a + b +R b + +diff --git a/b b/a +rename from b +rename to a + +- working to root: --rev 0 +M a + +diff --git a/a b/a +--- a/a ++++ b/a +@@ -1,1 +1,3 @@ + a ++6 ++a1 + +- working to branch: --rev 2 +M a + +diff --git a/a b/a +--- a/a ++++ b/a +@@ -1,3 +1,3 @@ + a +-m1 +-m2 ++6 ++a1 + +- root to parent: --rev 0 --rev . +A b + a +R a + +diff --git a/a b/b +rename from a +rename to b +--- a/a ++++ b/b +@@ -1,1 +1,3 @@ + a ++6 ++a1 + +- parent to root: --rev . --rev 0 +A a + b +R b + +diff --git a/b b/a +rename from b +rename to a +--- a/b ++++ b/a +@@ -1,3 +1,1 @@ + a +-6 +-a1 + +- branch to parent: --rev 2 --rev . +A b + a +R a + +diff --git a/a b/b +rename from a +rename to b +--- a/a ++++ b/b +@@ -1,3 +1,3 @@ + a +-m1 +-m2 ++6 ++a1 + +- parent to branch: --rev . --rev 2 +A a + b +R b + +diff --git a/b b/a +rename from b +rename to a +--- a/b ++++ b/a +@@ -1,3 +1,3 @@ + a +-6 +-a1 ++m1 ++m2 + +