fast-export: ensure that a renamed file is printed after all references
commit4ce6fb805803cd9bf82c08c84a2fdc8cd6bae8ef
authorJohannes Sixt <j6t@kdbg.org>
Tue, 7 Sep 2010 19:33:02 +0000 (7 21:33 +0200)
committerJunio C Hamano <gitster@pobox.com>
Wed, 8 Sep 2010 15:53:54 +0000 (8 08:53 -0700)
treef33d42bd81317d60c66ee24a57f71a74f56042b5
parent96ecac677aa84639a0b8e0aa0d781b197a2d16fe
fast-export: ensure that a renamed file is printed after all references

t9350 sets up a commit where a file is both copied and renamed. The output
of fast-export for this commit should look like this:

  author ...
  committer ...
  from :19
  C "file2" "file4"
  R "file2" "file5"

The order of the two modification lines is derived from the result that
the diff machinery produces.

060df62 (fast-export: Fix output order of D/F changes) inserted a qsort
call that modifies the order of the diff result. Unfortunately, qsort need
not be stable. Therefore, it is possible that the 'R' line appears before
the 'C' line and the resulting fast-import stream is incorrect.

Fix it by forcing that the rename entry is printed after all other
modification lines with the same file name.

Signed-off-by: Johannes Sixt <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fast-export.c