Browse Source

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>
tags/v0.10.1
Shawn O. Pearce 13 years ago
parent
commit
d4bbb2e449
1 changed files with 3 additions and 2 deletions
  1. 3
    2
      org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java

+ 3
- 2
org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java View File

@@ -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;

Loading…
Cancel
Save