summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2019-09-10 16:08:45 +0200
committerMatthias Sohn <matthias.sohn@sap.com>2019-09-10 16:08:45 +0200
commit84ac86ee61989bab441904e3e72b2b98199cccfc (patch)
tree970db5ebd3c2304e573aa186de7bbce1cc1c48b7 /org.eclipse.jgit
parentf042270e65bbb62dd50aeb5bf8c5f8e181acdebb (diff)
downloadjgit-84ac86ee61989bab441904e3e72b2b98199cccfc.tar.gz
jgit-84ac86ee61989bab441904e3e72b2b98199cccfc.zip
Fix WorkingTreeIterator.compareMetadata() for CheckStat.MINIMAL
If CheckStat is MINIMAL or timestamps have no nanosecond part WorkingTreeIterator.compareMetaData only checks the second part of timestamps and ignores nanoseconds which may have ended up in the index by using native git. If fileLastModified.getEpochSecond() == cacheLastModified.getEpochSecond() we currently proceed comparing fileLastModified and cacheLastModified with full precision which is wrong since we determined that we detected reduced timestamp resolution. Fix this and also handle smudged index entries for CheckStat.MINIMAL. Change-Id: I6149885903ac63d79b42d234cc02aa4e19578f3c Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java5
1 files changed, 3 insertions, 2 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
index 299f07fb09..a83165daa2 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/treewalk/WorkingTreeIterator.java
@@ -950,9 +950,10 @@ public abstract class WorkingTreeIterator extends AbstractTreeIterator {
if (fileLastModified.getEpochSecond() != cacheLastModified
.getEpochSecond()) {
return MetadataDiff.DIFFER_BY_TIMESTAMP;
+ } else if (entry.isSmudged()) {
+ return MetadataDiff.SMUDGED;
}
- }
- if (!fileLastModified.equals(cacheLastModified)) {
+ } else if (!fileLastModified.equals(cacheLastModified)) {
return MetadataDiff.DIFFER_BY_TIMESTAMP;
} else if (entry.isSmudged()) {
return MetadataDiff.SMUDGED;