From d4bbb2e4497335993f4d24f539111dc5d3f8bbcd Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Tue, 7 Dec 2010 19:05:07 -0800 Subject: [PATCH] IndexDiff: Clean up tree-index compare for staged files When comparing the ObjectIds for two tree entries its faster to use the raw buffer compares over allocating ObjectIds and then performing equals on their contents. However, this also needs to consider the raw modes. It is possible for a path to change modes but not ObjectId (e.g. making a file executable), and in this case its still a staged change to report back to the caller. Change-Id: I1a267254c04b3273a97f63c71d1e6718cd9d2fa8 Signed-off-by: Shawn O. Pearce --- org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java index 52fc3db79..2ffc54872 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java @@ -197,8 +197,9 @@ public class IndexDiff { if (treeIterator != null) { if (dirCacheIterator != null) { - if (!treeIterator.getEntryObjectId().equals( - dirCacheIterator.getEntryObjectId())) { + if (!treeIterator.idEqual(dirCacheIterator) + || treeIterator.getEntryRawMode() + != dirCacheIterator.getEntryRawMode()) { // in repo, in index, content diff => changed changed.add(treeWalk.getPathString()); changesExist = true;