diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java index 2823b34b1..68c5a3a43 100644 --- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java +++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java @@ -162,7 +162,7 @@ public void testPush_UnpackError_TruncatedPack() throws Exception { try { PacketLineIn pckin = new PacketLineIn(rawin); assertEquals("unpack error " - + JGitText.get().packfileIsTruncated, + + JGitText.get().packfileIsTruncatedNoParam, pckin.readString()); assertEquals("ng refs/objects/A n/a (unpacker error)", pckin.readString()); diff --git a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties index efe61052b..66b14bb7a 100644 --- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties +++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties @@ -146,7 +146,7 @@ couldNotRenameTemporaryIndexFileToIndex=Could not rename temporary index file to couldNotURLEncodeToUTF8=Could not URL encode to UTF-8 couldNotWriteFile=Could not write file {0} countingObjects=Counting objects -corruptPack=Pack file {0} is corrupt +corruptPack=Pack file {0} is corrupt, removing it from pack list createBranchFailedUnknownReason=Create branch failed for unknown reason createBranchUnexpectedResult=Create branch returned unexpected result {0} createNewFileFailed=Could not create new file {0} @@ -381,14 +381,15 @@ openFilesMustBeAtLeast1=Open files must be >= 1 openingConnection=Opening connection operationCanceled=Operation {0} was canceled outputHasAlreadyBeenStarted=Output has already been started. -packChecksumMismatch=Pack checksum mismatch +packChecksumMismatch=Pack checksum mismatch detected for pack file {0} packCorruptedWhileWritingToFilesystem=Pack corrupted while writing to filesystem packDoesNotMatchIndex=Pack {0} does not match index packetSizeMustBeAtLeast=packet size {0} must be >= {1} packetSizeMustBeAtMost=packet size {0} must be <= {1} packfileCorruptionDetected=Packfile corruption detected: {0} packFileInvalid=Pack file invalid: {0} -packfileIsTruncated=Packfile is truncated. +packfileIsTruncated=Packfile {0} is truncated. +packfileIsTruncatedNoParam=Packfile is truncated. packHasUnresolvedDeltas=pack has unresolved deltas packingCancelledDuringObjectsWriting=Packing cancelled during objects writing packObjectCountMismatch=Pack object count mismatch: pack {0} index {1}: {2} diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java index 8c81c9513..0300af197 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java @@ -448,6 +448,7 @@ public static JGitText get() { /***/ public String packfileCorruptionDetected; /***/ public String packFileInvalid; /***/ public String packfileIsTruncated; + /***/ public String packfileIsTruncatedNoParam; /***/ public String packHasUnresolvedDeltas; /***/ public String packingCancelledDuringObjectsWriting; /***/ public String packObjectCountMismatch; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java index 7c4776ea0..d5e1a582c 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java @@ -199,7 +199,7 @@ public long getCachedSize() { return key.cachedSize.get(); } - private String getPackName() { + String getPackName() { return packDesc.getFileName(PACK); } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java index 37dbc7ea7..4cf7cbefc 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java @@ -556,7 +556,8 @@ void copyPackAsIs(DfsPackFile pack, long length, boolean validate, pin(pack, 0); if (block.copy(0, buf, 0, 12) != 12) { pack.setInvalid(); - throw new IOException(JGitText.get().packfileIsTruncated); + throw new IOException(MessageFormat.format( + JGitText.get().packfileIsTruncated, pack.getPackName())); } md.update(buf, 0, 12); } @@ -580,7 +581,8 @@ void copyPackAsIs(DfsPackFile pack, long length, boolean validate, pin(pack, position); if (block.copy(position, buf, 0, 20) != 20) { pack.setInvalid(); - throw new IOException(JGitText.get().packfileIsTruncated); + throw new IOException(MessageFormat.format( + JGitText.get().packfileIsTruncated, pack.getPackName())); } if (!Arrays.equals(actHash, buf)) { pack.setInvalid(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java index 306a0d389..eb2293874 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java @@ -169,11 +169,13 @@ private synchronized PackIndex idx() throws IOException { try { final PackIndex idx = PackIndex.open(extFile(INDEX)); - if (packChecksum == null) + if (packChecksum == null) { packChecksum = idx.packChecksum; - else if (!Arrays.equals(packChecksum, idx.packChecksum)) - throw new PackMismatchException(JGitText.get().packChecksumMismatch); - + } else if (!Arrays.equals(packChecksum, idx.packChecksum)) { + throw new PackMismatchException(MessageFormat.format( + JGitText.get().packChecksumMismatch, + packFile.getPath())); + } loadedIdx = idx; } catch (IOException e) { invalid = true; diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java index a0a4c952f..85c3c7425 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java @@ -246,7 +246,9 @@ void copyPackAsIs(final PackFile pack, final long length, boolean validate, pin(pack, 0); if (window.copy(0, buf, 0, 12) != 12) { pack.setInvalid(); - throw new IOException(JGitText.get().packfileIsTruncated); + throw new IOException(MessageFormat.format( + JGitText.get().packfileIsTruncated, pack.getPackFile() + .getPath())); } md.update(buf, 0, 12); } @@ -270,7 +272,9 @@ void copyPackAsIs(final PackFile pack, final long length, boolean validate, pin(pack, position); if (window.copy(position, buf, 0, 20) != 20) { pack.setInvalid(); - throw new IOException(JGitText.get().packfileIsTruncated); + throw new IOException(MessageFormat.format( + JGitText.get().packfileIsTruncated, pack.getPackFile() + .getPath())); } if (!Arrays.equals(actHash, buf)) { pack.setInvalid(); diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java index 633554a96..5b54891cd 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java @@ -1135,7 +1135,8 @@ private int fill(final Source src, final int need) throws IOException { break; } if (next <= 0) - throw new EOFException(JGitText.get().packfileIsTruncated); + throw new EOFException( + JGitText.get().packfileIsTruncatedNoParam); bAvail += next; } return bOffset;