diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java index e0c4af1adc4a..25286f8b820e 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/jar/CoreJarVirtualFile.java @@ -58,7 +58,15 @@ public class CoreJarVirtualFile extends VirtualFile { @Override public String getPath() { if (myParent == null) return myHandler.myBasePath + "!/"; - return myParent.getPath() + "/" + myEntry.shortName; + + String parentPath = myParent.getPath(); + StringBuilder answer = new StringBuilder(parentPath.length() + 1 + myEntry.shortName.length()); + if (answer.charAt(answer.length() - 1) != '/') { + answer.append('/'); + } + answer.append(myEntry.shortName); + + return answer.toString(); } @Override diff --git a/platform/platform-api/src/com/intellij/ide/diff/DirDiffSettings.java b/platform/platform-api/src/com/intellij/ide/diff/DirDiffSettings.java index d37ccdea1c8a..592607973708 100644 --- a/platform/platform-api/src/com/intellij/ide/diff/DirDiffSettings.java +++ b/platform/platform-api/src/com/intellij/ide/diff/DirDiffSettings.java @@ -38,6 +38,7 @@ public class DirDiffSettings { public boolean showNewOnTarget = true; public boolean showCompareModes = true; public CompareMode compareMode = CompareMode.CONTENT; + public double compareTimestampAccuracy = 0; public boolean showInFrame = true; // in dialog otherwise diff --git a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java index fc0aadd8898e..55f79ac29eb4 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java +++ b/platform/vcs-impl/src/com/intellij/openapi/diff/impl/dir/DTree.java @@ -162,7 +162,7 @@ public class DTree { dtype = isEqual(src, trg) ? DType.EQUAL : DType.CHANGED; break; case TIMESTAMP: - dtype = src.getTimeStamp() == trg.getTimeStamp() ? DType.EQUAL : DType.CHANGED; + dtype = Math.abs(src.getTimeStamp() - trg.getTimeStamp()) <= settings.compareTimestampAccuracy ? DType.EQUAL : DType.CHANGED; break; } }