Merge branch 'stable-5.4'

* stable-5.4:
  Prepare 5.4.2-SNAPSHOT builds
  JGit v5.4.1.201908211225-r
  Prepare 5.3.4-SNAPSHOT builds
  JGit v5.3.3.201908210735-r
  Add missing @since tag on FileTreeIterator#getLastModifiedInstant
  Prepare 5.1.10-SNAPSHOT builds
  JGit v5.1.9.201908210455-r
  Avoid sign extension when comparing mtime with Instant#getEpochSecond
  Fix deprecation in DirCache caused by Instant based DirCacheEntry

Change-Id: I63156d6b73044d5d8820869a397a0aa94e607b50
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
This commit is contained in:
Matthias Sohn 2019-08-21 22:39:34 +02:00
commit 1553c94223
3 changed files with 9 additions and 8 deletions

View File

@ -657,8 +657,7 @@ void writeTo(File dir, OutputStream os) throws IOException {
// Write the individual file entries. // Write the individual file entries.
final int smudge_s; Instant smudge;
final int smudge_ns;
if (myLock != null) { if (myLock != null) {
// For new files we need to smudge the index entry // For new files we need to smudge the index entry
// if they have been modified "now". Ideally we'd // if they have been modified "now". Ideally we'd
@ -666,12 +665,10 @@ void writeTo(File dir, OutputStream os) throws IOException {
// so we use the current timestamp as a approximation. // so we use the current timestamp as a approximation.
myLock.createCommitSnapshot(); myLock.createCommitSnapshot();
snapshot = myLock.getCommitSnapshot(); snapshot = myLock.getCommitSnapshot();
smudge_s = (int) (snapshot.lastModifiedInstant().getEpochSecond()); smudge = snapshot.lastModifiedInstant();
smudge_ns = snapshot.lastModifiedInstant().getNano();
} else { } else {
// Used in unit tests only // Used in unit tests only
smudge_ns = 0; smudge = Instant.EPOCH;
smudge_s = 0;
} }
// Check if tree is non-null here since calling updateSmudgedEntries // Check if tree is non-null here since calling updateSmudgedEntries
@ -683,8 +680,9 @@ void writeTo(File dir, OutputStream os) throws IOException {
for (int i = 0; i < entryCnt; i++) { for (int i = 0; i < entryCnt; i++) {
final DirCacheEntry e = sortedEntries[i]; final DirCacheEntry e = sortedEntries[i];
if (e.mightBeRacilyClean(smudge_s, smudge_ns)) if (e.mightBeRacilyClean(smudge)) {
e.smudgeRacilyClean(); e.smudgeRacilyClean();
}
e.write(dos); e.write(dos);
} }

View File

@ -378,7 +378,7 @@ public final boolean mightBeRacilyClean(Instant smudge) {
// //
final int base = infoOffset + P_MTIME; final int base = infoOffset + P_MTIME;
final int mtime = NB.decodeInt32(info, base); final int mtime = NB.decodeInt32(info, base);
if (smudge.getEpochSecond() == mtime) { if ((int) smudge.getEpochSecond() == mtime) {
return smudge.getNano() <= NB.decodeInt32(info, base + 4); return smudge.getNano() <= NB.decodeInt32(info, base + 4);
} }
return false; return false;

View File

@ -412,6 +412,9 @@ public long getLastModified() {
return attributes.getLastModifiedInstant().toEpochMilli(); return attributes.getLastModifiedInstant().toEpochMilli();
} }
/**
* @since 5.1.9
*/
@Override @Override
public Instant getLastModifiedInstant() { public Instant getLastModifiedInstant() {
return attributes.getLastModifiedInstant(); return attributes.getLastModifiedInstant();