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>
This commit is contained in:
parent
e6c3922764
commit
d4bbb2e449
|
@ -197,8 +197,9 @@ public boolean diff() throws IOException {
|
|||
|
||||
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…
Reference in New Issue