]> source.dussan.org Git - jgit.git/commit
Fix diff header on renamed or copied files 59/22059/4
authorShawn Pearce <spearce@spearce.org>
Fri, 14 Feb 2014 17:53:48 +0000 (09:53 -0800)
committerMatthias Sohn <matthias.sohn@sap.com>
Tue, 18 Feb 2014 21:08:07 +0000 (22:08 +0100)
commitf2f24a304d7393f5d04c57db627890edae78768b
tree4553e9a96f4e4fcb9d6d4dcddf03aef85f8a7492
parent2290516ddb5a92ccc296df500aa5e9e30cbc240e
Fix diff header on renamed or copied files

When git-core renames or copies a file and the mode differs the
header shows the mode change first, then the rename or copy data:

  diff --git a/COPYING b/LICENSE
  old mode 100644
  new mode 100755
  similarity index 92%
  rename from COPYING
  rename to LICENSE
  index d645695..54863be
  --- a/COPYING
  +++ b/LICENSE
  @@ -56,20 +56,6 @@

JGit relies on this ordering inside of FileHeader. Parsing "new file
mode NNN" after "copy from/to" or "rename from/to" resets the change
type to be ADD, losing the COPIED or RENAMED status and old path.

This fixes a 4 year old bug in Gerrit Code Review that prevents
opening a file for review if the file was copied from another file,
modified in this change, and the mode was updated (e.g. execute
bit was added).

Change-Id: If4c9ecd61ef0ca8e3e1ea857301f7b5c948efb96
[ms: added test case]
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/diff/DiffFormatterTest.java
org.eclipse.jgit/src/org/eclipse/jgit/diff/DiffFormatter.java