diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2010-12-07 19:05:07 -0800 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2010-12-08 10:03:20 -0800 |
commit | d4bbb2e4497335993f4d24f539111dc5d3f8bbcd (patch) | |
tree | 227b25ed6316d1bc2e13a35b1e55041ec4e767ce | |
parent | e6c39227640536ac1c2e41d8970aeca84b3c6268 (diff) | |
download | jgit-d4bbb2e4497335993f4d24f539111dc5d3f8bbcd.tar.gz jgit-d4bbb2e4497335993f4d24f539111dc5d3f8bbcd.zip |
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 <spearce@spearce.org>
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java | 5 |
1 files 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 52fc3db791..2ffc54872b 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; |