summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2015-02-27 01:54:12 +0100
committerMatthias Sohn <matthias.sohn@sap.com>2015-02-27 01:54:12 +0100
commit1350f7ea1d801b8e47f8c58779967b8e31881883 (patch)
treea7896bb744cbdcece4801d30745e742672efba33
parent102c50e177f398247452a68c7142dc1cf97532f1 (diff)
parent9b486e390625df6cb495f57012a0384753399ec8 (diff)
downloadjgit-1350f7ea1d801b8e47f8c58779967b8e31881883.tar.gz
jgit-1350f7ea1d801b8e47f8c58779967b8e31881883.zip
Merge branch 'stable-3.7'
* stable-3.7: Prepare 3.7.1-SNAPSHOT builds JGit v3.7.0.201502260915-r Read user.name and email from environment first Provide more details in exceptions thrown when packfile is invalid Change-Id: I427f861c6bc94da5e3e05dbbebbf0ad15719a323 Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
-rw-r--r--org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/ProtocolErrorTest.java2
-rw-r--r--org.eclipse.jgit.java7/META-INF/MANIFEST.MF2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java17
-rw-r--r--org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java1
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsReader.java6
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackFile.java10
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java8
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/UserConfig.java17
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/transport/PackParser.java3
11 files changed, 52 insertions, 23 deletions
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 2823b34b1f..68c5a3a439 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 class ProtocolErrorTest extends HttpTestCase {
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.java7/META-INF/MANIFEST.MF b/org.eclipse.jgit.java7/META-INF/MANIFEST.MF
index c373181238..92da30d5fc 100644
--- a/org.eclipse.jgit.java7/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.java7/META-INF/MANIFEST.MF
@@ -1,6 +1,6 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
-Fragment-Host: org.eclipse.jgit;bundle-version="3.1.1"
+Fragment-Host: org.eclipse.jgit;bundle-version="4.0.0"
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.java7
Bundle-Version: 4.0.0.qualifier
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
index 69926f915d..db31fd34cd 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ConfigTest.java
@@ -186,6 +186,9 @@ public class ConfigTest {
assertFalse(localConfig.get(UserConfig.KEY).isAuthorEmailImplicit());
// the values are defined in the global configuration
+ // first clear environment variables since they would override
+ // configuration files
+ mockSystemReader.clearProperties();
userGitConfig.setString("user", null, "name", "global username");
userGitConfig.setString("user", null, "email", "author@globalemail");
authorName = localConfig.get(UserConfig.KEY).getAuthorName();
@@ -211,6 +214,20 @@ public class ConfigTest {
assertEquals("author@localemail", authorEmail);
assertFalse(localConfig.get(UserConfig.KEY).isCommitterNameImplicit());
assertFalse(localConfig.get(UserConfig.KEY).isCommitterEmailImplicit());
+
+ // also git environment variables are defined
+ mockSystemReader.setProperty(Constants.GIT_AUTHOR_NAME_KEY,
+ "git author name");
+ mockSystemReader.setProperty(Constants.GIT_AUTHOR_EMAIL_KEY,
+ "author@email");
+ localConfig.setString("user", null, "name", "local username");
+ localConfig.setString("user", null, "email", "author@localemail");
+ authorName = localConfig.get(UserConfig.KEY).getAuthorName();
+ authorEmail = localConfig.get(UserConfig.KEY).getAuthorEmail();
+ assertEquals("git author name", authorName);
+ assertEquals("author@email", authorEmail);
+ assertFalse(localConfig.get(UserConfig.KEY).isAuthorNameImplicit());
+ assertFalse(localConfig.get(UserConfig.KEY).isAuthorEmailImplicit());
}
@Test
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 50aae7390e..17ac8102d7 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}
@@ -382,14 +382,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 12893d6ffa..bbcb69899b 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -449,6 +449,7 @@ public class JGitText extends TranslationBundle {
/***/ 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 50064d52a0..5d130b6d61 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 final class DfsPackFile implements AutoCloseable {
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 37dbc7ea7e..4cf7cbefce 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 @@ public final class DfsReader extends ObjectReader implements ObjectReuseAsIs {
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 @@ public final class DfsReader extends ObjectReader implements ObjectReuseAsIs {
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 ffe6e810bd..223689b0f6 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
@@ -170,11 +170,13 @@ public class PackFile implements Iterable<PackIndex.MutableEntry>,
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 a0a4c952fc..85c3c74255 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 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
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 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
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/lib/UserConfig.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/UserConfig.java
index 60ac6f176d..b8d236c1da 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/UserConfig.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/UserConfig.java
@@ -172,12 +172,13 @@ public class UserConfig {
}
private static String getNameInternal(Config rc, String envKey) {
- // try to get the user name from the local and global configurations.
- String username = rc.getString("user", null, "name"); //$NON-NLS-1$ //$NON-NLS-2$
+ // try to get the user name for the system property GIT_XXX_NAME
+ String username = system().getenv(envKey);
if (username == null) {
- // try to get the user name for the system property GIT_XXX_NAME
- username = system().getenv(envKey);
+ // try to get the user name from the local and global
+ // configurations.
+ username = rc.getString("user", null, "name"); //$NON-NLS-1$ //$NON-NLS-2$
}
return stripInvalidCharacters(username);
@@ -196,12 +197,12 @@ public class UserConfig {
}
private static String getEmailInternal(Config rc, String envKey) {
- // try to get the email from the local and global configurations.
- String email = rc.getString("user", null, "email"); //$NON-NLS-1$ //$NON-NLS-2$
+ // try to get the email for the system property GIT_XXX_EMAIL
+ String email = system().getenv(envKey);
if (email == null) {
- // try to get the email for the system property GIT_XXX_EMAIL
- email = system().getenv(envKey);
+ // try to get the email from the local and global configurations.
+ email = rc.getString("user", null, "email"); //$NON-NLS-1$ //$NON-NLS-2$
}
return stripInvalidCharacters(email);
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 633554a96f..5b54891cd1 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 @@ public abstract class PackParser {
break;
}
if (next <= 0)
- throw new EOFException(JGitText.get().packfileIsTruncated);
+ throw new EOFException(
+ JGitText.get().packfileIsTruncatedNoParam);
bAvail += next;
}
return bOffset;