https://bz.mercurial-scm.org/show_bug.cgi?id=5834

            Bug ID: 5834
           Summary: If a grafted file is renamed, subsequent grafts fail
                    to find it
           Product: Mercurial
           Version: 4.1.1
          Hardware: PC
                OS: Windows
            Status: UNCONFIRMED
          Severity: bug
          Priority: normal
         Component: Mercurial
          Assignee: bugzi...@mercurial-scm.org
          Reporter: gabor.stefa...@nng.com
                CC: mercurial-devel@mercurial-scm.org

Consider the following script:

  $ hg init
  $ echo a > a; hg add a
  $ hg commit -m a # creates revision 0 as the root
  $ echo b > b; hg add b
  $ hg commit -m b # creates revision 1 as a child of 0
  $ hg up 0
  $ hg mv a x
  $ hg commit -m x # creates revision 2 as a child of 0
  $ hg graft 1 # grafts revision 1 onto revision 2, creating revision 3
  $ hg mv b y
  $ hg commit -m y # creates revision 4 as a child of 3
  $ hg up 1
  $ echo bb > b
  $ hg commit -m bb # creates revision 5 as a child of 1
  $ hg up 4
  $ hg graft 4 # should graft revision 5 onto 4, but fails

The final graft fails to identify the file named "y" as the equivalent of "b",
despite the rename information clearly identifying it as such, because it was
initially created by a graft, and therefore has no common ancestor in the DAG
with "b" in the source branch.

The obvious fix is to modify the _related function in copies.py to check graft
relationships in the absence of true DAG ancestry. The difficulty is that graft
is only one way a commit can end up "copied" to a new branch (rebase and evolve
come to mind, all recording origin information differently).

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to