• E
    fast-import: Improve robustness when D->F changes provided in wrong order · 253fb5f8
    Elijah Newren 提交于
    When older versions of fast-export came across a directory changing to a
    symlink (or regular file), it would output the changes in the form
      M 120000 :239821 dir-changing-to-symlink
      D dir-changing-to-symlink/filename1
    When fast-import sees the first line, it deletes the directory named
    dir-changing-to-symlink (and any files below it) and creates a symlink in
    its place.  When fast-import came across the second line, it was previously
    trying to remove the file and relevant leading directories in
    tree_content_remove(), and as a side effect it would delete the symlink
    that was just created.  This resulted in the symlink silently missing from
    the resulting repository.
    
    To improve robustness, we ignore file deletions underneath directory names
    that correspond to non-directories.  This can also be viewed as a minor
    optimization: since there cannot be a file and a directory with the same
    name in the same directory, the file clearly can't exist so nothing needs
    to be done to delete it.
    Signed-off-by: NElijah Newren <newren@gmail.com>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    253fb5f8
fast-import.c 74.9 KB