aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2010-09-16 17:22:37 -0700
committerShawn O. Pearce <spearce@spearce.org>2010-09-16 17:22:37 -0700
commit5deb5b9a4aebd562a8680167dc6aee93fd7bb5c5 (patch)
tree3e963186d1f791e8f9f1a2f4113dd94652ea0846
parent55714f6e73c9f858eb17eadcb9df05de029017aa (diff)
parent26f507f0df5822df0f19a5ca16462a4bbfeab5fc (diff)
downloadjgit-5deb5b9a4aebd562a8680167dc6aee93fd7bb5c5.tar.gz
jgit-5deb5b9a4aebd562a8680167dc6aee93fd7bb5c5.zip
Merge branch 'stable-0.9'
* stable-0.9: Qualify post-0.9.3 builds JGit 0.9.3 clone: Correct formatting of init message Fix cloning of repositories with big objects Qualify post-0.9.1 builds JGit 0.9.1 Fix PlotCommitList to set lanes on child-less commits
-rw-r--r--org.eclipse.jgit.console/META-INF/MANIFEST.MF10
-rw-r--r--org.eclipse.jgit.console/pom.xml2
-rw-r--r--org.eclipse.jgit.http.server/META-INF/MANIFEST.MF24
-rw-r--r--org.eclipse.jgit.http.server/pom.xml2
-rw-r--r--org.eclipse.jgit.http.test/META-INF/MANIFEST.MF22
-rw-r--r--org.eclipse.jgit.http.test/pom.xml2
-rw-r--r--org.eclipse.jgit.iplog/META-INF/MANIFEST.MF30
-rw-r--r--org.eclipse.jgit.iplog/pom.xml2
-rw-r--r--org.eclipse.jgit.junit/META-INF/MANIFEST.MF38
-rw-r--r--org.eclipse.jgit.junit/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml4
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml2
-rw-r--r--org.eclipse.jgit.packaging/org.eclipse.jgit.updatesite/pom.xml8
-rw-r--r--org.eclipse.jgit.packaging/pom.xml4
-rw-r--r--org.eclipse.jgit.pgm/META-INF/MANIFEST.MF40
-rw-r--r--org.eclipse.jgit.pgm/pom.xml2
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AbstractFetchCommand.java10
-rw-r--r--org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java4
-rw-r--r--org.eclipse.jgit.test/META-INF/MANIFEST.MF60
-rw-r--r--org.eclipse.jgit.test/pom.xml2
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/revplot/PlotCommitListTest.java306
-rw-r--r--org.eclipse.jgit.ui/META-INF/MANIFEST.MF16
-rw-r--r--org.eclipse.jgit.ui/pom.xml2
-rw-r--r--org.eclipse.jgit/META-INF/MANIFEST.MF48
-rw-r--r--org.eclipse.jgit/pom.xml2
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java94
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java18
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileObjectDatabase.java7
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java34
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java11
-rw-r--r--pom.xml2
35 files changed, 617 insertions, 203 deletions
diff --git a/org.eclipse.jgit.console/META-INF/MANIFEST.MF b/org.eclipse.jgit.console/META-INF/MANIFEST.MF
index a7599e0de1..6820ac9e11 100644
--- a/org.eclipse.jgit.console/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.console/META-INF/MANIFEST.MF
@@ -3,11 +3,11 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.console
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Vendor: %provider_name
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: org.eclipse.jgit.console;version="0.9.0"
-Import-Package: org.eclipse.jgit.nls;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.transport;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util;version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.jgit.console;version="0.9.4"
+Import-Package: org.eclipse.jgit.nls;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.transport;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util;version="[0.9.4,0.10.0)"
Require-Bundle: com.jcraft.jsch;bundle-version="[0.1.37,0.2.0)"
diff --git a/org.eclipse.jgit.console/pom.xml b/org.eclipse.jgit.console/pom.xml
index 6612865b08..77cfae674b 100644
--- a/org.eclipse.jgit.console/pom.xml
+++ b/org.eclipse.jgit.console/pom.xml
@@ -52,7 +52,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.console</artifactId>
diff --git a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
index edaa1edd19..d517ecc838 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -2,22 +2,22 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %provider_name
Export-Package:
- org.eclipse.jgit.http.server;version="0.9.0",
- org.eclipse.jgit.http.server.glue;version="0.9.0",
- org.eclipse.jgit.http.server.resolver;version="0.9.0"
+ org.eclipse.jgit.http.server;version="0.9.4",
+ org.eclipse.jgit.http.server.glue;version="0.9.4",
+ org.eclipse.jgit.http.server.resolver;version="0.9.4"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: javax.servlet;version="[2.5.0,3.0.0)",
javax.servlet.http;version="[2.5.0,3.0.0)",
- org.eclipse.jgit.errors;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.lib;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.nls;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.file;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.transport;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util.io;version="[0.9.0,0.10.0)"
+ org.eclipse.jgit.errors;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.lib;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.nls;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.file;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.transport;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util.io;version="[0.9.4,0.10.0)"
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index c2623ca873..0da665e337 100644
--- a/org.eclipse.jgit.http.server/pom.xml
+++ b/org.eclipse.jgit.http.server/pom.xml
@@ -52,7 +52,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index 21dd60817d..aef31b6556 100644
--- a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.http.test
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Vendor: %provider_name
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: J2SE-1.5
@@ -22,13 +22,13 @@ Import-Package: javax.servlet;version="[2.5.0,3.0.0)",
org.eclipse.jetty.util.component;version="[7.0.1,8.0.0)",
org.eclipse.jetty.util.log;version="[7.0.1,8.0.0)",
org.eclipse.jetty.util.thread;version="[7.0.1,8.0.0)",
- org.eclipse.jgit.errors;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.http.server;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.http.server.glue;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.http.server.resolver;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.junit;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.lib;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.file;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.transport;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util;version="[0.9.0,0.10.0)"
+ org.eclipse.jgit.errors;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.http.server;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.http.server.glue;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.http.server.resolver;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.junit;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.lib;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.file;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.transport;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util;version="[0.9.4,0.10.0)"
diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml
index 96b7f400d4..2bea48db64 100644
--- a/org.eclipse.jgit.http.test/pom.xml
+++ b/org.eclipse.jgit.http.test/pom.xml
@@ -51,7 +51,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.http.test</artifactId>
diff --git a/org.eclipse.jgit.iplog/META-INF/MANIFEST.MF b/org.eclipse.jgit.iplog/META-INF/MANIFEST.MF
index 31a19b5ca0..85eb1ffbec 100644
--- a/org.eclipse.jgit.iplog/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.iplog/META-INF/MANIFEST.MF
@@ -2,22 +2,22 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.iplog
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Vendor: %provider_name
Bundle-Localization: plugin
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.eclipse.jgit.diff;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.dircache;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.errors;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.lib;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.nls;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revplot;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk.filter;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.file;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.transport;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.treewalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.treewalk.filter;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util;version="[0.9.0,0.10.0)"
-Export-Package: org.eclipse.jgit.iplog;version="0.9.0"
+Import-Package: org.eclipse.jgit.diff;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.dircache;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.errors;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.lib;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.nls;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revplot;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk.filter;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.file;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.transport;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.treewalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util;version="[0.9.4,0.10.0)"
+Export-Package: org.eclipse.jgit.iplog;version="0.9.4"
diff --git a/org.eclipse.jgit.iplog/pom.xml b/org.eclipse.jgit.iplog/pom.xml
index a780071f31..5ebf16b0f0 100644
--- a/org.eclipse.jgit.iplog/pom.xml
+++ b/org.eclipse.jgit.iplog/pom.xml
@@ -51,7 +51,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.iplog</artifactId>
diff --git a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
index 9216a5ac47..1e2c094287 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -2,28 +2,28 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %provider_name
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: junit.framework;version="[4.0.0,5.0.0)",
- org.eclipse.jgit.diff;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.dircache;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.errors;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.fnmatch;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.lib;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.merge;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.patch;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revplot;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk.filter;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.file;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.pack;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.transport;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.treewalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.treewalk.filter;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util.io;version="[0.9.0,0.10.0)"
-Export-Package: org.eclipse.jgit.junit;version="0.9.0"
+ org.eclipse.jgit.diff;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.dircache;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.errors;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.fnmatch;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.lib;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.merge;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.patch;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revplot;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk.filter;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.file;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.pack;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.transport;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.treewalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util.io;version="[0.9.4,0.10.0)"
+Export-Package: org.eclipse.jgit.junit;version="0.9.4"
Require-Bundle: com.jcraft.jsch;bundle-version="[0.1.37,0.2.0)"
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index 0e806a2deb..a3889c09e6 100644
--- a/org.eclipse.jgit.junit/pom.xml
+++ b/org.eclipse.jgit.junit/pom.xml
@@ -52,7 +52,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.junit</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
index 6a662bdc99..c383375086 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit"
label="%featureName"
- version="0.9.0.qualifier"
+ version="0.9.4.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
index 8144db8391..ed2bb9b074 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.feature/pom.xml
@@ -50,7 +50,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.feature</artifactId>
@@ -62,7 +62,7 @@
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</dependency>
</dependencies>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
index d61e1cd483..b63814f20a 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.junit"
label="%featureName"
- version="0.9.0.qualifier"
+ version="0.9.4.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
index 72bc3131d5..1693d8c199 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.junit.feature/pom.xml
@@ -50,7 +50,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.junit.feature</artifactId>
@@ -62,7 +62,7 @@
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.junit</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</dependency>
</dependencies>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
index 1e4fa8875e..a58592fc05 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/feature.xml
@@ -2,7 +2,7 @@
<feature
id="org.eclipse.jgit.source"
label="%featureName"
- version="0.9.0.qualifier"
+ version="0.9.4.qualifier"
provider-name="%providerName">
<description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
index fae19933cb..2cc970bf5f 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.source.feature/pom.xml
@@ -50,7 +50,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.source.feature</artifactId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.updatesite/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.updatesite/pom.xml
index a60ec74b6d..2d4aef8996 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.updatesite/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.updatesite/pom.xml
@@ -50,7 +50,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.updatesite</artifactId>
@@ -58,18 +58,18 @@
<name>Eclipse JGit Plugin Update Site (Incubation)</name>
<!-- see http://issues.sonatype.org/browse/TYCHO-313 -->
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit.junit</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</dependency>
</dependencies>
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index cb545674e6..cdf08bcad4 100644
--- a/org.eclipse.jgit.packaging/pom.xml
+++ b/org.eclipse.jgit.packaging/pom.xml
@@ -53,7 +53,7 @@
<groupId>org.eclipse.jgit</groupId>
<artifactId>jgit.tycho.parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JGit Tycho Parent (Incubation)</name>
@@ -83,7 +83,7 @@
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
<classifier>sources</classifier>
</dependency>
</dependencies>
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
index 771e113d3b..4fd557df14 100644
--- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
@@ -2,32 +2,32 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.pgm
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Vendor: %provider_name
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Import-Package: org.eclipse.jgit.api;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.api.errors;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.awtui;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.diff;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.dircache;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.errors;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.iplog;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.lib;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.nls;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revplot;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk.filter;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.file;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.pack;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.transport;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.treewalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.treewalk.filter;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util;version="[0.9.0,0.10.0)",
+Import-Package: org.eclipse.jgit.api;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.api.errors;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.awtui;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.diff;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.dircache;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.errors;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.iplog;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.lib;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.nls;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revplot;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk.filter;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.file;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.pack;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.transport;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.treewalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util;version="[0.9.4,0.10.0)",
org.kohsuke.args4j;version="[2.0.12,2.1.0)",
org.kohsuke.args4j.spi;version="[2.0.12,2.1.0)"
Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.jgit.pgm;version="0.9.0";
+Export-Package: org.eclipse.jgit.pgm;version="0.9.4";
uses:="org.eclipse.jgit.lib,
org.eclipse.jgit.nls,
org.eclipse.jgit.treewalk,
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index d803e00115..67a85aa7d4 100644
--- a/org.eclipse.jgit.pgm/pom.xml
+++ b/org.eclipse.jgit.pgm/pom.xml
@@ -50,7 +50,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.pgm</artifactId>
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AbstractFetchCommand.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AbstractFetchCommand.java
index 356966ab59..fd7fd4459b 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AbstractFetchCommand.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/AbstractFetchCommand.java
@@ -49,6 +49,7 @@ package org.eclipse.jgit.pgm;
import java.io.IOException;
import java.io.PrintWriter;
+import java.text.MessageFormat;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.ObjectId;
@@ -104,16 +105,19 @@ abstract class AbstractFetchCommand extends TextBuiltin {
else if (0 <= cr)
s = cr;
else {
- writer.format(CLIText.get().remoteMessage, pkt);
+ writer.print(MessageFormat.format(CLIText.get().remoteMessage,
+ pkt));
writer.println();
break;
}
if (pkt.charAt(s) == '\r') {
- writer.format(CLIText.get().remoteMessage, pkt.substring(0, s));
+ writer.print(MessageFormat.format(CLIText.get().remoteMessage,
+ pkt.substring(0, s)));
writer.print('\r');
} else {
- writer.format(CLIText.get().remoteMessage, pkt.substring(0, s));
+ writer.print(MessageFormat.format(CLIText.get().remoteMessage,
+ pkt.substring(0, s)));
writer.println();
}
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
index 1b1a8c28e8..1b04989670 100644
--- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
+++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Clone.java
@@ -114,7 +114,9 @@ class Clone extends AbstractFetchCommand {
dst.getConfig().save();
db = dst;
- out.format(CLIText.get().initializedEmptyGitRepositoryIn, gitdir.getAbsolutePath());
+ out.print(MessageFormat.format(
+ CLIText.get().initializedEmptyGitRepositoryIn, gitdir
+ .getAbsolutePath()));
out.println();
out.flush();
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index c1ef787b15..dbf6bf2674 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -2,40 +2,40 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %provider_name
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Import-Package: junit.framework;version="[4.0.0,5.0.0)",
junit.textui;version="[3.8.2,4.0.0)",
- org.eclipse.jgit;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.api;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.api.errors;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.awtui;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.console;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.diff;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.dircache;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.errors;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.events;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.fnmatch;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.http.server;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.ignore;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.iplog;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.junit;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.lib;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.merge;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.nls;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.patch;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.pgm;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revplot;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk.filter;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.file;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.storage.pack;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.transport;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.treewalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.treewalk.filter;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util.io;version="[0.9.0,0.10.0)"
+ org.eclipse.jgit;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.api;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.api.errors;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.awtui;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.console;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.diff;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.dircache;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.errors;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.events;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.fnmatch;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.http.server;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.ignore;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.iplog;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.junit;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.lib;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.merge;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.nls;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.patch;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.pgm;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revplot;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk.filter;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.file;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.storage.pack;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.transport;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.treewalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.treewalk.filter;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util.io;version="[0.9.4,0.10.0)"
Require-Bundle: com.jcraft.jsch;bundle-version="[0.1.37,0.2.0)"
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index 5a1f9e2219..953d1c22be 100644
--- a/org.eclipse.jgit.test/pom.xml
+++ b/org.eclipse.jgit.test/pom.xml
@@ -52,7 +52,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/revplot/PlotCommitListTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revplot/PlotCommitListTest.java
new file mode 100644
index 0000000000..b8e1df7888
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/revplot/PlotCommitListTest.java
@@ -0,0 +1,306 @@
+/*
+ * Copyright (C) 2010, Christian Halstrick <christian.halstrick@sap.com>
+ * and other copyright owners as documented in the project's IP log.
+ *
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Distribution License v1.0 which
+ * accompanies this distribution, is reproduced below, and is
+ * available at http://www.eclipse.org/org/documents/edl-v10.php
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ *
+ * - Neither the name of the Eclipse Foundation, Inc. nor the
+ * names of its contributors may be used to endorse or promote
+ * products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package org.eclipse.jgit.revplot;
+
+import org.eclipse.jgit.revwalk.RevCommit;
+import org.eclipse.jgit.revwalk.RevWalkTestCase;
+
+public class PlotCommitListTest extends RevWalkTestCase {
+
+ class CommitListAssert {
+ private PlotCommitList<PlotLane> pcl;
+ private PlotCommit<PlotLane> current;
+ private int nextIndex = 0;
+
+ CommitListAssert(PlotCommitList<PlotLane> pcl) {
+ this.pcl = pcl;
+ }
+
+ public CommitListAssert commit(RevCommit id) {
+ assertTrue("Unexpected end of list at pos#"+nextIndex, pcl.size()>nextIndex);
+ current = pcl.get(nextIndex++);
+ assertEquals("Expected commit not found at pos#" + (nextIndex - 1),
+ id.getId(), current.getId());
+ return this;
+ }
+
+ public CommitListAssert lanePos(int pos) {
+ PlotLane lane = current.getLane();
+ assertEquals("Position of lane of commit #" + (nextIndex - 1)
+ + " not as expected.", pos, lane.getPosition());
+ return this;
+ }
+
+ public CommitListAssert parents(RevCommit... parents) {
+ assertEquals("Number of parents of commit #" + (nextIndex - 1)
+ + " not as expected.", parents.length,
+ current.getParentCount());
+ for (int i = 0; i < parents.length; i++)
+ assertEquals("Unexpected parent of commit #" + (nextIndex - 1),
+ parents[i], current.getParent(i));
+ return this;
+ }
+
+ public CommitListAssert noMoreCommits() {
+ assertEquals("Unexpected size of list", nextIndex, pcl.size());
+ return this;
+ }
+ }
+
+ @SuppressWarnings("boxing")
+ public void testLinear() throws Exception {
+ final RevCommit a = commit();
+ final RevCommit b = commit(a);
+ final RevCommit c = commit(b);
+
+ PlotWalk pw = new PlotWalk(db);
+ pw.markStart(pw.lookupCommit(c.getId()));
+
+ PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>();
+ pcl.source(pw);
+ pcl.fillTo(Integer.MAX_VALUE);
+
+ CommitListAssert test = new CommitListAssert(pcl);
+ test.commit(c).lanePos(0).parents(b);
+ test.commit(b).lanePos(0).parents(a);
+ test.commit(a).lanePos(0).parents();
+ test.noMoreCommits();
+ }
+
+ @SuppressWarnings("boxing")
+ public void testMerged() throws Exception {
+ final RevCommit a = commit();
+ final RevCommit b = commit(a);
+ final RevCommit c = commit(a);
+ final RevCommit d = commit(b, c);
+
+ PlotWalk pw = new PlotWalk(db);
+ pw.markStart(pw.lookupCommit(d.getId()));
+
+ PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>();
+ pcl.source(pw);
+ pcl.fillTo(Integer.MAX_VALUE);
+
+ CommitListAssert test = new CommitListAssert(pcl);
+ test.commit(d).lanePos(0).parents(b, c);
+ test.commit(c).lanePos(0).parents(a);
+ test.commit(b).lanePos(1).parents(a);
+ test.commit(a).lanePos(0).parents();
+ test.noMoreCommits();
+ }
+
+ @SuppressWarnings("boxing")
+ public void testSideBranch() throws Exception {
+ final RevCommit a = commit();
+ final RevCommit b = commit(a);
+ final RevCommit c = commit(a);
+
+ PlotWalk pw = new PlotWalk(db);
+ pw.markStart(pw.lookupCommit(b.getId()));
+ pw.markStart(pw.lookupCommit(c.getId()));
+
+ PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>();
+ pcl.source(pw);
+ pcl.fillTo(Integer.MAX_VALUE);
+
+ CommitListAssert test = new CommitListAssert(pcl);
+ test.commit(c).lanePos(0).parents(a);
+ test.commit(b).lanePos(1).parents(a);
+ test.commit(a).lanePos(0).parents();
+ test.noMoreCommits();
+ }
+
+ @SuppressWarnings("boxing")
+ public void test2SideBranches() throws Exception {
+ final RevCommit a = commit();
+ final RevCommit b = commit(a);
+ final RevCommit c = commit(a);
+ final RevCommit d = commit(a);
+
+ PlotWalk pw = new PlotWalk(db);
+ pw.markStart(pw.lookupCommit(b.getId()));
+ pw.markStart(pw.lookupCommit(c.getId()));
+ pw.markStart(pw.lookupCommit(d.getId()));
+
+ PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>();
+ pcl.source(pw);
+ pcl.fillTo(Integer.MAX_VALUE);
+
+ CommitListAssert test = new CommitListAssert(pcl);
+ test.commit(d).lanePos(0).parents(a);
+ test.commit(c).lanePos(1).parents(a);
+ test.commit(b).lanePos(1).parents(a);
+ test.commit(a).lanePos(0).parents();
+ test.noMoreCommits();
+ }
+
+ @SuppressWarnings("boxing")
+ public void testBug300282_1() throws Exception {
+ final RevCommit a = commit();
+ final RevCommit b = commit(a);
+ final RevCommit c = commit(a);
+ final RevCommit d = commit(a);
+ final RevCommit e = commit(a);
+ final RevCommit f = commit(a);
+ final RevCommit g = commit(f);
+
+ PlotWalk pw = new PlotWalk(db);
+ // TODO: when we add unnecessary commit's as tips (e.g. a commit which
+ // is a parent of another tip) the walk will return those commits twice.
+ // Find out why!
+ // pw.markStart(pw.lookupCommit(a.getId()));
+ pw.markStart(pw.lookupCommit(b.getId()));
+ pw.markStart(pw.lookupCommit(c.getId()));
+ pw.markStart(pw.lookupCommit(d.getId()));
+ pw.markStart(pw.lookupCommit(e.getId()));
+ // pw.markStart(pw.lookupCommit(f.getId()));
+ pw.markStart(pw.lookupCommit(g.getId()));
+
+ PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>();
+ pcl.source(pw);
+ pcl.fillTo(Integer.MAX_VALUE);
+
+ CommitListAssert test = new CommitListAssert(pcl);
+ test.commit(g).lanePos(0).parents(f);
+ test.commit(f).lanePos(0).parents(a);
+ test.commit(e).lanePos(1).parents(a);
+ test.commit(d).lanePos(1).parents(a);
+ test.commit(c).lanePos(1).parents(a);
+ test.commit(b).lanePos(1).parents(a);
+ test.commit(a).lanePos(0).parents();
+ test.noMoreCommits();
+ }
+
+ // test the history of the egit project between 9fdaf3c1 and e76ad9170f
+ public void testEgitHistory() throws Exception {
+ final RevCommit merge_fix = commit();
+ final RevCommit add_simple = commit(merge_fix);
+ final RevCommit remove_unused = commit(merge_fix);
+ final RevCommit merge_remove = commit(add_simple, remove_unused);
+ final RevCommit resolve_handler = commit(merge_fix);
+ final RevCommit clear_repositorycache = commit(merge_remove);
+ final RevCommit add_Maven = commit(clear_repositorycache);
+ final RevCommit use_remote = commit(clear_repositorycache);
+ final RevCommit findToolBar_layout = commit(clear_repositorycache);
+ final RevCommit merge_add_Maven = commit(findToolBar_layout, add_Maven);
+ final RevCommit update_eclipse_iplog = commit(merge_add_Maven);
+ final RevCommit changeset_implementation = commit(clear_repositorycache);
+ final RevCommit merge_use_remote = commit(update_eclipse_iplog,
+ use_remote);
+ final RevCommit disable_source = commit(merge_use_remote);
+ final RevCommit update_eclipse_iplog2 = commit(merge_use_remote);
+ final RevCommit merge_disable_source = commit(update_eclipse_iplog2,
+ disable_source);
+ final RevCommit merge_changeset_implementation = commit(
+ merge_disable_source, changeset_implementation);
+ final RevCommit clone_operation = commit(merge_disable_source,
+ merge_changeset_implementation);
+ final RevCommit update_eclipse = commit(add_Maven);
+ final RevCommit merge_resolve_handler = commit(clone_operation,
+ resolve_handler);
+ final RevCommit disable_comment = commit(clone_operation);
+ final RevCommit merge_disable_comment = commit(merge_resolve_handler,
+ disable_comment);
+ final RevCommit fix_broken = commit(merge_disable_comment);
+ final RevCommit add_a_clear = commit(fix_broken);
+ final RevCommit merge_update_eclipse = commit(add_a_clear,
+ update_eclipse);
+ final RevCommit sort_roots = commit(merge_update_eclipse);
+ final RevCommit fix_logged_npe = commit(merge_changeset_implementation);
+ final RevCommit merge_fixed_logged_npe = commit(sort_roots,
+ fix_logged_npe);
+
+ PlotWalk pw = new PlotWalk(db);
+ pw.markStart(pw.lookupCommit(merge_fixed_logged_npe.getId()));
+
+ PlotCommitList<PlotLane> pcl = new PlotCommitList<PlotLane>();
+ pcl.source(pw);
+ pcl.fillTo(Integer.MAX_VALUE);
+
+ CommitListAssert test = new CommitListAssert(pcl);
+
+ test.commit(merge_fixed_logged_npe).parents(sort_roots, fix_logged_npe)
+ .lanePos(0);
+ test.commit(fix_logged_npe).parents(merge_changeset_implementation)
+ .lanePos(0);
+ test.commit(sort_roots).parents(merge_update_eclipse).lanePos(1);
+ test.commit(merge_update_eclipse).parents(add_a_clear, update_eclipse)
+ .lanePos(1);
+ test.commit(add_a_clear).parents(fix_broken).lanePos(1);
+ test.commit(fix_broken).parents(merge_disable_comment).lanePos(1);
+ test.commit(merge_disable_comment)
+ .parents(merge_resolve_handler, disable_comment).lanePos(1);
+ test.commit(disable_comment).parents(clone_operation).lanePos(1);
+ test.commit(merge_resolve_handler)
+ .parents(clone_operation, resolve_handler).lanePos(2);
+ test.commit(update_eclipse).parents(add_Maven).lanePos(3);
+ test.commit(clone_operation)
+ .parents(merge_disable_source, merge_changeset_implementation)
+ .lanePos(1);
+ test.commit(merge_changeset_implementation)
+ .parents(merge_disable_source, changeset_implementation)
+ .lanePos(0);
+ test.commit(merge_disable_source)
+ .parents(update_eclipse_iplog2, disable_source).lanePos(1);
+ test.commit(update_eclipse_iplog2).parents(merge_use_remote).lanePos(0);
+ test.commit(disable_source).parents(merge_use_remote).lanePos(1);
+ test.commit(merge_use_remote).parents(update_eclipse_iplog, use_remote)
+ .lanePos(0);
+ test.commit(changeset_implementation).parents(clear_repositorycache)
+ .lanePos(2);
+ test.commit(update_eclipse_iplog).parents(merge_add_Maven).lanePos(0);
+ test.commit(merge_add_Maven).parents(findToolBar_layout, add_Maven)
+ .lanePos(0);
+ test.commit(findToolBar_layout).parents(clear_repositorycache)
+ .lanePos(0);
+ test.commit(use_remote).parents(clear_repositorycache).lanePos(1);
+ test.commit(add_Maven).parents(clear_repositorycache).lanePos(3);
+ test.commit(clear_repositorycache).parents(merge_remove).lanePos(2);
+ test.commit(resolve_handler).parents(merge_fix).lanePos(4);
+ test.commit(merge_remove).parents(add_simple, remove_unused).lanePos(2);
+ test.commit(remove_unused).parents(merge_fix).lanePos(0);
+ test.commit(add_simple).parents(merge_fix).lanePos(1);
+ test.commit(merge_fix).parents().lanePos(3);
+ test.noMoreCommits();
+ }
+}
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index 1649731c0d..3881b4dc88 100644
--- a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
@@ -3,14 +3,14 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit.ui
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Vendor: %provider_name
Bundle-RequiredExecutionEnvironment: J2SE-1.5
-Export-Package: org.eclipse.jgit.awtui;version="0.9.0"
-Import-Package: org.eclipse.jgit.lib;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.nls;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revplot;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.revwalk;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.transport;version="[0.9.0,0.10.0)",
- org.eclipse.jgit.util;version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.jgit.awtui;version="0.9.4"
+Import-Package: org.eclipse.jgit.lib;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.nls;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revplot;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.revwalk;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.transport;version="[0.9.4,0.10.0)",
+ org.eclipse.jgit.util;version="[0.9.4,0.10.0)"
Require-Bundle: com.jcraft.jsch;bundle-version="[0.1.37,0.2.0)"
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index 6ac04cd7c6..a10f69aad7 100644
--- a/org.eclipse.jgit.ui/pom.xml
+++ b/org.eclipse.jgit.ui/pom.xml
@@ -52,7 +52,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit.ui</artifactId>
diff --git a/org.eclipse.jgit/META-INF/MANIFEST.MF b/org.eclipse.jgit/META-INF/MANIFEST.MF
index 0c4d102e7f..d3c6055012 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -2,32 +2,32 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %plugin_name
Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 0.9.0.qualifier
+Bundle-Version: 0.9.4.qualifier
Bundle-Localization: plugin
Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit;version="0.9.0",
- org.eclipse.jgit.api;version="0.9.0",
- org.eclipse.jgit.api.errors;version="0.9.0",
- org.eclipse.jgit.diff;version="0.9.0",
- org.eclipse.jgit.dircache;version="0.9.0",
- org.eclipse.jgit.errors;version="0.9.0",
- org.eclipse.jgit.events;version="0.9.0",
- org.eclipse.jgit.fnmatch;version="0.9.0",
- org.eclipse.jgit.ignore;version="0.9.0",
- org.eclipse.jgit.lib;version="0.9.0",
- org.eclipse.jgit.merge;version="0.9.0",
- org.eclipse.jgit.nls;version="0.9.0",
- org.eclipse.jgit.patch;version="0.9.0",
- org.eclipse.jgit.revplot;version="0.9.0",
- org.eclipse.jgit.revwalk;version="0.9.0",
- org.eclipse.jgit.revwalk.filter;version="0.9.0",
- org.eclipse.jgit.storage.file;version="0.9.0",
- org.eclipse.jgit.storage.pack;version="0.9.0",
- org.eclipse.jgit.transport;version="0.9.0",
- org.eclipse.jgit.treewalk;version="0.9.0",
- org.eclipse.jgit.treewalk.filter;version="0.9.0",
- org.eclipse.jgit.util;version="0.9.0",
- org.eclipse.jgit.util.io;version="0.9.0"
+Export-Package: org.eclipse.jgit;version="0.9.4",
+ org.eclipse.jgit.api;version="0.9.4",
+ org.eclipse.jgit.api.errors;version="0.9.4",
+ org.eclipse.jgit.diff;version="0.9.4",
+ org.eclipse.jgit.dircache;version="0.9.4",
+ org.eclipse.jgit.errors;version="0.9.4",
+ org.eclipse.jgit.events;version="0.9.4",
+ org.eclipse.jgit.fnmatch;version="0.9.4",
+ org.eclipse.jgit.ignore;version="0.9.4",
+ org.eclipse.jgit.lib;version="0.9.4",
+ org.eclipse.jgit.merge;version="0.9.4",
+ org.eclipse.jgit.nls;version="0.9.4",
+ org.eclipse.jgit.patch;version="0.9.4",
+ org.eclipse.jgit.revplot;version="0.9.4",
+ org.eclipse.jgit.revwalk;version="0.9.4",
+ org.eclipse.jgit.revwalk.filter;version="0.9.4",
+ org.eclipse.jgit.storage.file;version="0.9.4",
+ org.eclipse.jgit.storage.pack;version="0.9.4",
+ org.eclipse.jgit.transport;version="0.9.4",
+ org.eclipse.jgit.treewalk;version="0.9.4",
+ org.eclipse.jgit.treewalk.filter;version="0.9.4",
+ org.eclipse.jgit.util;version="0.9.4",
+ org.eclipse.jgit.util.io;version="0.9.4"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Require-Bundle: com.jcraft.jsch;bundle-version="[0.1.37,0.2.0)"
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index fc8e72e8e4..0f6f12a23a 100644
--- a/org.eclipse.jgit/pom.xml
+++ b/org.eclipse.jgit/pom.xml
@@ -53,7 +53,7 @@
<parent>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.jgit</artifactId>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
index 55d0206c02..6ffa0336aa 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revplot/PlotCommitList.java
@@ -1,5 +1,6 @@
/*
- * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
+ * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>,
+ * Copyright (C) 2010, Christian Halstrick <christian.halstrick@sap.com>
* and other copyright owners as documented in the project's IP log.
*
* This program and the accompanying materials are made available
@@ -44,6 +45,7 @@
package org.eclipse.jgit.revplot;
import java.text.MessageFormat;
+import java.util.BitSet;
import java.util.Collection;
import java.util.HashSet;
import java.util.TreeSet;
@@ -68,17 +70,17 @@ public class PlotCommitList<L extends PlotLane> extends
RevCommitList<PlotCommit<L>> {
static final int MAX_LENGTH = 25;
- private int lanesAllocated;
+ private int positionsAllocated;
- private final TreeSet<Integer> freeLanes = new TreeSet<Integer>();
+ private final TreeSet<Integer> freePositions = new TreeSet<Integer>();
private final HashSet<PlotLane> activeLanes = new HashSet<PlotLane>(32);
@Override
public void clear() {
super.clear();
- lanesAllocated = 0;
- freeLanes.clear();
+ positionsAllocated = 0;
+ freePositions.clear();
activeLanes.clear();
}
@@ -131,42 +133,104 @@ public class PlotCommitList<L extends PlotLane> extends
c.lane = nextFreeLane();
activeLanes.add(c.lane);
}
-
for (int r = index - 1; r >= 0; r--) {
final PlotCommit rObj = get(r);
if (rObj == c)
break;
rObj.addPassingLane(c.lane);
}
+
currCommit.lane = c.lane;
} else {
// More than one child, or our child is a merge.
// Use a different lane.
//
+ // Process all our children. Especially important when there is more
+ // than one child (e.g. a commit is processed where other branches
+ // fork out). For each child the following is done
+ // 1. If no lane was assigned to the child a new lane is created and
+ // assigned
+ // 2. The lane of the child is closed. If this frees a position,
+ // this position will be added freePositions list.
+ // If we have multiple children which where previously not on a lane
+ // each such child will get his own new lane but all those new lanes
+ // will be on the same position. We have to take care that not
+ // multiple newly created (in step 1) lanes occupy that position on
+ // which the
+ // parent's lane will be on. Therefore we delay closing the lane
+ // with the parents position until all children are processed.
+
+ // The lane on that position the current commit will be on
+ PlotLane reservedLane = null;
+
for (int i = 0; i < nChildren; i++) {
final PlotCommit c = currCommit.children[i];
- if (activeLanes.remove(c.lane)) {
- recycleLane((L) c.lane);
- freeLanes.add(Integer.valueOf(c.lane.getPosition()));
- }
+ // don't forget to position all of your children if they are
+ // not already positioned.
+ if (c.lane == null) {
+ c.lane = nextFreeLane();
+ activeLanes.add(c.lane);
+ if (reservedLane != null)
+ closeLane(c.lane);
+ else
+ reservedLane = c.lane;
+ } else if (reservedLane == null && activeLanes.contains(c.lane))
+ reservedLane = c.lane;
+ else
+ closeLane(c.lane);
}
+ // finally all children are processed. We can close the lane on that
+ // position our current commit will be on.
+ if (reservedLane != null)
+ closeLane(reservedLane);
+
currCommit.lane = nextFreeLane();
activeLanes.add(currCommit.lane);
+ // take care: when connecting yourself to your child make sure that
+ // you will not be located on a lane on which a passed commit is
+ // located on. Otherwise we would have to draw a line through a
+ // commit.
int remaining = nChildren;
+ BitSet blockedPositions = new BitSet();
for (int r = index - 1; r >= 0; r--) {
final PlotCommit rObj = get(r);
if (currCommit.isChild(rObj)) {
if (--remaining == 0)
break;
}
- rObj.addPassingLane(currCommit.lane);
+ if (rObj != null) {
+ PlotLane lane = rObj.getLane();
+ if (lane != null)
+ blockedPositions.set(lane.getPosition());
+ rObj.addPassingLane(currCommit.lane);
+ }
+ }
+ // Now let's check whether we have to reposition the lane
+ if (blockedPositions.get(currCommit.lane.getPosition())) {
+ int newPos = -1;
+ for (Integer pos : freePositions)
+ if (!blockedPositions.get(pos)) {
+ newPos = pos;
+ break;
+ }
+ if (newPos == -1)
+ newPos = positionsAllocated++;
+ freePositions.add(currCommit.lane.getPosition());
+ currCommit.lane.position = newPos;
}
}
}
+ private void closeLane(PlotLane lane) {
+ recycleLane((L) lane);
+ if (activeLanes.remove(lane)) {
+ freePositions.add(Integer.valueOf(lane.getPosition()));
+ }
+ }
+
private void setupChildren(final PlotCommit<L> currCommit) {
final int nParents = currCommit.getParentCount();
for (int i = 0; i < nParents; i++)
@@ -175,12 +239,12 @@ public class PlotCommitList<L extends PlotLane> extends
private PlotLane nextFreeLane() {
final PlotLane p = createLane();
- if (freeLanes.isEmpty()) {
- p.position = lanesAllocated++;
+ if (freePositions.isEmpty()) {
+ p.position = positionsAllocated++;
} else {
- final Integer min = freeLanes.first();
+ final Integer min = freePositions.first();
p.position = min.intValue();
- freeLanes.remove(min);
+ freePositions.remove(min);
}
return p;
}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java
index f0159f626f..a5762b61ee 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/CachedObjectDirectory.java
@@ -213,8 +213,22 @@ class CachedObjectDirectory extends FileObjectDatabase {
}
@Override
- boolean insertUnpackedObject(File tmp, ObjectId objectId, boolean force) {
- return wrapped.insertUnpackedObject(tmp, objectId, force);
+ InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId objectId,
+ boolean createDuplicate) {
+ InsertLooseObjectResult result = wrapped.insertUnpackedObject(tmp,
+ objectId, createDuplicate);
+ switch (result) {
+ case INSERTED:
+ case EXISTS_LOOSE:
+ if (!unpackedObjects.contains(objectId))
+ unpackedObjects.add(objectId);
+ break;
+
+ case EXISTS_PACKED:
+ case FAILURE:
+ break;
+ }
+ return result;
}
@Override
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileObjectDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileObjectDatabase.java
index 29c7a25312..8bd3751010 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileObjectDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/FileObjectDatabase.java
@@ -57,6 +57,10 @@ import org.eclipse.jgit.storage.pack.ObjectToPack;
import org.eclipse.jgit.storage.pack.PackWriter;
abstract class FileObjectDatabase extends ObjectDatabase {
+ static enum InsertLooseObjectResult {
+ INSERTED, EXISTS_PACKED, EXISTS_LOOSE, FAILURE;
+ }
+
@Override
public ObjectReader newReader() {
return new WindowCursor(this);
@@ -249,7 +253,8 @@ abstract class FileObjectDatabase extends ObjectDatabase {
abstract long getObjectSize2(WindowCursor curs, String objectName,
AnyObjectId objectId) throws IOException;
- abstract boolean insertUnpackedObject(File tmp, ObjectId id, boolean force);
+ abstract InsertLooseObjectResult insertUnpackedObject(File tmp,
+ ObjectId id, boolean createDuplicate);
abstract FileObjectDatabase newCachedFileObjectDatabase();
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java
index 372a97813e..e7ccba0820 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java
@@ -455,23 +455,33 @@ public class ObjectDirectory extends FileObjectDatabase {
}
@Override
- boolean insertUnpackedObject(File tmp, ObjectId id, boolean force) {
- if (!force && has(id)) {
- // Object is already in the repository, remove temporary file.
- //
+ InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId id,
+ boolean createDuplicate) {
+ // If the object is already in the repository, remove temporary file.
+ //
+ if (unpackedObjectCache.isUnpacked(id)) {
tmp.delete();
- return true;
+ return InsertLooseObjectResult.EXISTS_LOOSE;
}
+ if (!createDuplicate && has(id)) {
+ tmp.delete();
+ return InsertLooseObjectResult.EXISTS_PACKED;
+ }
+
tmp.setReadOnly();
final File dst = fileFor(id);
- if (force && dst.exists()) {
+ if (dst.exists()) {
+ // We want to be extra careful and avoid replacing an object
+ // that already exists. We can't be sure renameTo() would
+ // fail on all platforms if dst exists, so we check first.
+ //
tmp.delete();
- return true;
+ return InsertLooseObjectResult.EXISTS_LOOSE;
}
if (tmp.renameTo(dst)) {
unpackedObjectCache.add(id);
- return true;
+ return InsertLooseObjectResult.INSERTED;
}
// Maybe the directory doesn't exist yet as the object
@@ -481,12 +491,12 @@ public class ObjectDirectory extends FileObjectDatabase {
dst.getParentFile().mkdir();
if (tmp.renameTo(dst)) {
unpackedObjectCache.add(id);
- return true;
+ return InsertLooseObjectResult.INSERTED;
}
- if (!force && has(id)) {
+ if (!createDuplicate && has(id)) {
tmp.delete();
- return true;
+ return InsertLooseObjectResult.EXISTS_PACKED;
}
// The object failed to be renamed into its proper
@@ -495,7 +505,7 @@ public class ObjectDirectory extends FileObjectDatabase {
// fail.
//
tmp.delete();
- return false;
+ return InsertLooseObjectResult.FAILURE;
}
boolean tryAgain1() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java
index d92285de8c..074ebb9617 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectoryInserter.java
@@ -83,9 +83,18 @@ class ObjectDirectoryInserter extends ObjectInserter {
final MessageDigest md = digest();
final File tmp = toTemp(md, type, len, is);
final ObjectId id = ObjectId.fromRaw(md.digest());
- if (db.insertUnpackedObject(tmp, id, false /* no duplicate */))
+
+ switch (db.insertUnpackedObject(tmp, id, false /* no duplicate */)) {
+ case INSERTED:
+ case EXISTS_PACKED:
+ case EXISTS_LOOSE:
return id;
+ case FAILURE:
+ default:
+ break;
+ }
+
final File dst = db.fileFor(id);
throw new ObjectWritingException("Unable to create new object: " + dst);
}
diff --git a/pom.xml b/pom.xml
index fe9a8c095e..75d4728f08 100644
--- a/pom.xml
+++ b/pom.xml
@@ -50,7 +50,7 @@
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit-parent</artifactId>
<packaging>pom</packaging>
- <version>0.9.0-SNAPSHOT</version>
+ <version>0.9.4-SNAPSHOT</version>
<name>JGit - Parent</name>
<url>${jgit-url}</url>