Merge branch 'stable-4.3' into stable-4.4

* stable-4.3:
  Fix computation of id in WorkingTreeIterator with autocrlf and
    smudging
  Prepare 4.3.2-SNAPSHOT builds
  JGit v4.3.1.201605051710-r
  Scan loose ref before packed in case gc about to remove the loose
  Fix possible NPEs when reporting transport errors
  Fix calling of clean/smudge filters from Checkout,MergeCommands
  Fix ApplyCommand when result of patch is an empty file

Change-Id: I829f06699f6670e519d04c927bdba4b82df29199
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
diff --git a/.buckversion b/.buckversion
index 561a769..f5fe016 100644
--- a/.buckversion
+++ b/.buckversion
@@ -1 +1 @@
-ca8d6cbac373a690f543c5159eec0116e76187a9
+e64a2e2ada022f81e42be750b774024469551398
diff --git a/.gitignore b/.gitignore
index 6c62199..95ad174 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
-/target
+/.buckd
 /.project
 /buck-cache
 /buck-out
+/target
diff --git a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
index afa0f5c..08ae94a 100644
--- a/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant.test/META-INF/MANIFEST.MF
@@ -3,14 +3,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.ant.test
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Import-Package: org.apache.tools.ant,
- org.eclipse.jgit.ant.tasks;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.junit;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
+ org.eclipse.jgit.ant.tasks;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.junit;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
  org.hamcrest;version="[1.1.0,2.0.0)",
  org.junit;version="[4.0.0,5.0.0)"
diff --git a/org.eclipse.jgit.ant.test/pom.xml b/org.eclipse.jgit.ant.test/pom.xml
index fc1257d..4d7466e 100644
--- a/org.eclipse.jgit.ant.test/pom.xml
+++ b/org.eclipse.jgit.ant.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.ant.test</artifactId>
diff --git a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
index 98da2c0..98d618b 100644
--- a/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ant/META-INF/MANIFEST.MF
@@ -2,11 +2,11 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jgit.ant
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Import-Package: org.apache.tools.ant,
-  org.eclipse.jgit.storage.file;version="[4.3.2,4.4.0)"
+  org.eclipse.jgit.storage.file;version="[4.4.0,4.5.0)"
 Bundle-Localization: plugin
 Bundle-Vendor: %Provider-Name
-Export-Package: org.eclipse.jgit.ant.tasks;version="4.3.2";
+Export-Package: org.eclipse.jgit.ant.tasks;version="4.4.0";
  uses:="org.apache.tools.ant.types,org.apache.tools.ant"
diff --git a/org.eclipse.jgit.ant/pom.xml b/org.eclipse.jgit.ant/pom.xml
index 6fc806f..6a603d0 100644
--- a/org.eclipse.jgit.ant/pom.xml
+++ b/org.eclipse.jgit.ant/pom.xml
@@ -48,7 +48,7 @@
 	<parent>
 		<groupId>org.eclipse.jgit</groupId>
 		<artifactId>org.eclipse.jgit-parent</artifactId>
-		<version>4.3.2-SNAPSHOT</version>
+		<version>4.4.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>org.eclipse.jgit.ant</artifactId>
@@ -72,7 +72,7 @@
 		<dependency>
 			<groupId>org.apache.ant</groupId>
 			<artifactId>ant</artifactId>
-			<version>1.9.2</version>
+			<version>1.9.6</version>
 		</dependency>
 	</dependencies>
 
diff --git a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
index a185d1f..99482ff 100644
--- a/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.archive
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
@@ -12,14 +12,14 @@
  org.apache.commons.compress.compressors.bzip2;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.gzip;version="[1.4,2.0)",
  org.apache.commons.compress.compressors.xz;version="[1.4,2.0)",
- org.eclipse.jgit.api;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
+ org.eclipse.jgit.api;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
  org.osgi.framework;version="[1.3.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
 Bundle-Activator: org.eclipse.jgit.archive.FormatActivator
-Export-Package: org.eclipse.jgit.archive;version="4.3.2";
+Export-Package: org.eclipse.jgit.archive;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.api,
    org.apache.commons.compress.archivers,
diff --git a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
index cf164a9..d4dc56c 100644
--- a/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.archive/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.archive - Sources
 Bundle-SymbolicName: org.eclipse.jgit.archive.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 4.3.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.archive;version="4.3.2.qualifier";roots="."
+Bundle-Version: 4.4.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.archive;version="4.4.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.archive/pom.xml b/org.eclipse.jgit.archive/pom.xml
index 7b9c6ac..b371c5b 100644
--- a/org.eclipse.jgit.archive/pom.xml
+++ b/org.eclipse.jgit.archive/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.archive</artifactId>
diff --git a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
index 0872d49..8ce678d 100644
--- a/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.apache/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-SymbolicName: org.eclipse.jgit.http.apache
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Bundle-Localization: plugin
 Bundle-Vendor: %Provider-Name
@@ -19,10 +19,10 @@
  org.apache.http.impl.client;version="[4.1.0,5.0.0)",
  org.apache.http.impl.client.cache;version="[4.1.0,5.0.0)",
  org.apache.http.params;version="[4.1.0,5.0.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.http;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)"
-Export-Package: org.eclipse.jgit.transport.http.apache;version="4.3.2";
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.http;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)"
+Export-Package: org.eclipse.jgit.transport.http.apache;version="4.4.0";
   uses:="org.eclipse.jgit.transport.http,
    javax.net.ssl,
    org.apache.http.client,
diff --git a/org.eclipse.jgit.http.apache/pom.xml b/org.eclipse.jgit.http.apache/pom.xml
index 2b0b58d..4b5c19a 100644
--- a/org.eclipse.jgit.http.apache/pom.xml
+++ b/org.eclipse.jgit.http.apache/pom.xml
@@ -48,7 +48,7 @@
 	<parent>
 		<groupId>org.eclipse.jgit</groupId>
 		<artifactId>org.eclipse.jgit-parent</artifactId>
-		<version>4.3.2-SNAPSHOT</version>
+		<version>4.4.0-SNAPSHOT</version>
 	</parent>
 
 	<artifactId>org.eclipse.jgit.http.apache</artifactId>
diff --git a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
index 848b55e..658b627 100644
--- a/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.http.server/META-INF/MANIFEST.MF
@@ -2,13 +2,13 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.http.server
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.http.server;version="4.3.2",
- org.eclipse.jgit.http.server.glue;version="4.3.2";
+Export-Package: org.eclipse.jgit.http.server;version="4.4.0",
+ org.eclipse.jgit.http.server.glue;version="4.4.0";
   uses:="javax.servlet,javax.servlet.http",
- org.eclipse.jgit.http.server.resolver;version="4.3.2";
+ org.eclipse.jgit.http.server.resolver;version="4.4.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.transport,
@@ -17,12 +17,12 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Import-Package: javax.servlet;version="[2.5.0,3.2.0)",
  javax.servlet.http;version="[2.5.0,3.2.0)",
- org.eclipse.jgit.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.resolver;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)"
+ org.eclipse.jgit.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)"
diff --git a/org.eclipse.jgit.http.server/pom.xml b/org.eclipse.jgit.http.server/pom.xml
index c6de937..513d590 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.server</artifactId>
diff --git a/org.eclipse.jgit.http.test/.classpath b/org.eclipse.jgit.http.test/.classpath
index 2fdcc94..e1a1a64 100644
--- a/org.eclipse.jgit.http.test/.classpath
+++ b/org.eclipse.jgit.http.test/.classpath
@@ -3,5 +3,6 @@
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="tst"/>
+	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>
diff --git a/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.http.test/META-INF/MANIFEST.MF
index fefdb66..253679b 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 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.http.test
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
@@ -22,23 +22,24 @@
  org.eclipse.jetty.util.log;version="[9.0.0,10.0.0)",
  org.eclipse.jetty.util.security;version="[9.0.0,10.0.0)",
  org.eclipse.jetty.util.thread;version="[9.0.0,10.0.0)",
- org.eclipse.jgit.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.http.server;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.http.server.glue;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.http.server.resolver;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.junit;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.junit.http;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.http;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.http.apache;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.resolver;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
+ org.eclipse.jgit.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.http.server;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.http.server.glue;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.http.server.resolver;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.junit;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.junit.http;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.http;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.http.apache;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.0.0,5.0.0)",
  org.junit.runner;version="[4.0.0,5.0.0)",
diff --git a/org.eclipse.jgit.http.test/pom.xml b/org.eclipse.jgit.http.test/pom.xml
index 8fc34f7..69ffe49 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.http.test</artifactId>
@@ -72,7 +72,6 @@
       <groupId>org.eclipse.jgit</groupId>
       <artifactId>org.eclipse.jgit</artifactId>
       <version>${project.version}</version>
-      <scope>test</scope>
     </dependency>
 
     <dependency>
@@ -111,6 +110,7 @@
   </dependencies>
 
   <build>
+    <sourceDirectory>src/</sourceDirectory>
     <testSourceDirectory>tst/</testSourceDirectory>
 
     <testResources>
diff --git a/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java b/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java
new file mode 100644
index 0000000..a1e41d1
--- /dev/null
+++ b/org.eclipse.jgit.http.test/src/org/eclipse/jgit/http/test/RefsUnreadableInMemoryRepository.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2016, Google Inc.
+ * 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.http.test;
+
+import java.io.IOException;
+
+import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
+import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
+import org.eclipse.jgit.lib.RefDatabase;
+
+/**
+ * An {@link InMemoryRepository} whose refs can be made unreadable for testing
+ * purposes.
+ */
+class RefsUnreadableInMemoryRepository extends InMemoryRepository {
+
+	private final RefsUnreadableRefDatabase refs;
+
+	private volatile boolean failing;
+
+	RefsUnreadableInMemoryRepository(DfsRepositoryDescription repoDesc) {
+		super(repoDesc);
+		refs = new RefsUnreadableRefDatabase();
+		failing = false;
+	}
+
+	@Override
+	public RefDatabase getRefDatabase() {
+		return refs;
+	}
+
+	/**
+	 * Make the ref database unable to scan its refs.
+	 * <p>
+	 * It may be useful to follow a call to startFailing with a call to
+	 * {@link RefDatabase#refresh()}, ensuring the next ref read fails.
+	 */
+	void startFailing() {
+		failing = true;
+	}
+
+	private class RefsUnreadableRefDatabase extends MemRefDatabase {
+
+		@Override
+		protected RefCache scanAllRefs() throws IOException {
+			if (failing) {
+				throw new IOException("disk failed, no refs found");
+			} else {
+				return super.scanAllRefs();
+			}
+		}
+	}
+}
diff --git a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java
index 0f3d3c6..073c751 100644
--- a/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java
+++ b/org.eclipse.jgit.http.test/tst/org/eclipse/jgit/http/test/SmartClientSmartServerTest.java
@@ -82,9 +82,11 @@
 import org.eclipse.jgit.errors.TransportException;
 import org.eclipse.jgit.http.server.GitServlet;
 import org.eclipse.jgit.internal.JGitText;
+import org.eclipse.jgit.internal.storage.dfs.DfsRepositoryDescription;
 import org.eclipse.jgit.junit.TestRepository;
 import org.eclipse.jgit.junit.TestRng;
 import org.eclipse.jgit.junit.http.AccessEvent;
+import org.eclipse.jgit.junit.http.AppServer;
 import org.eclipse.jgit.junit.http.HttpTestCase;
 import org.eclipse.jgit.lib.ConfigConstants;
 import org.eclipse.jgit.lib.Constants;
@@ -155,18 +157,7 @@ public void setUp() throws Exception {
 
 		ServletContextHandler app = server.addContext("/git");
 		GitServlet gs = new GitServlet();
-		gs.setRepositoryResolver(new RepositoryResolver<HttpServletRequest>() {
-			public Repository open(HttpServletRequest req, String name)
-					throws RepositoryNotFoundException,
-					ServiceNotEnabledException {
-				if (!name.equals(srcName))
-					throw new RepositoryNotFoundException(name);
-
-				final Repository db = src.getRepository();
-				db.incrementOpen();
-				return db;
-			}
-		});
+		gs.setRepositoryResolver(new TestRepoResolver(src, srcName));
 		app.addServlet(new ServletHolder(gs), "/*");
 
 		ServletContextHandler broken = server.addContext("/bad");
@@ -509,6 +500,51 @@ public void testInvalidWant() throws Exception {
 	}
 
 	@Test
+	public void testFetch_RefsUnreadableOnUpload() throws Exception {
+		AppServer noRefServer = new AppServer();
+		try {
+			final String repoName = "refs-unreadable";
+			RefsUnreadableInMemoryRepository badRefsRepo = new RefsUnreadableInMemoryRepository(
+					new DfsRepositoryDescription(repoName));
+			final TestRepository<Repository> repo = new TestRepository<Repository>(
+					badRefsRepo);
+
+			ServletContextHandler app = noRefServer.addContext("/git");
+			GitServlet gs = new GitServlet();
+			gs.setRepositoryResolver(new TestRepoResolver(repo, repoName));
+			app.addServlet(new ServletHolder(gs), "/*");
+			noRefServer.setUp();
+
+			RevBlob A2_txt = repo.blob("A2");
+			RevCommit A2 = repo.commit().add("A2_txt", A2_txt).create();
+			RevCommit B2 = repo.commit().parent(A2).add("A2_txt", "C2")
+					.add("B2", "B2").create();
+			repo.update(master, B2);
+
+			URIish badRefsURI = new URIish(noRefServer.getURI()
+					.resolve(app.getContextPath() + "/" + repoName).toString());
+
+			Repository dst = createBareRepository();
+			try (Transport t = Transport.open(dst, badRefsURI);
+					FetchConnection c = t.openFetch()) {
+				// We start failing here to exercise the post-advertisement
+				// upload pack handler.
+				badRefsRepo.startFailing();
+				// Need to flush caches because ref advertisement populated them.
+				badRefsRepo.getRefDatabase().refresh();
+				c.fetch(NullProgressMonitor.INSTANCE,
+						Collections.singleton(c.getRef(master)),
+						Collections.<ObjectId> emptySet());
+				fail("Successfully served ref with value " + c.getRef(master));
+			} catch (TransportException err) {
+				assertEquals("internal server error", err.getMessage());
+			}
+		} finally {
+			noRefServer.tearDown();
+		}
+	}
+
+	@Test
 	public void testPush_NotAuthorized() throws Exception {
 		final TestRepository src = createTestRepository();
 		final RevBlob Q_txt = src.blob("new text");
@@ -677,4 +713,28 @@ private void enableReceivePack() throws IOException {
 		cfg.setBoolean("http", null, "receivepack", true);
 		cfg.save();
 	}
+
+	private final class TestRepoResolver
+			implements RepositoryResolver<HttpServletRequest> {
+
+		private final TestRepository<Repository> repo;
+
+		private final String repoName;
+
+		private TestRepoResolver(TestRepository<Repository> repo,
+				String repoName) {
+			this.repo = repo;
+			this.repoName = repoName;
+		}
+
+		public Repository open(HttpServletRequest req, String name)
+				throws RepositoryNotFoundException, ServiceNotEnabledException {
+			if (!name.equals(repoName))
+				throw new RepositoryNotFoundException(name);
+
+			Repository db = repo.getRepository();
+			db.incrementOpen();
+			return db;
+		}
+	}
 }
diff --git a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
index bd26ac0..63a8b56 100644
--- a/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit.http/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.junit.http
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
@@ -20,16 +20,16 @@
  org.eclipse.jetty.util.component;version="[9.0.0,10.0.0)",
  org.eclipse.jetty.util.log;version="[9.0.0,10.0.0)",
  org.eclipse.jetty.util.security;version="[9.0.0,10.0.0)",
- org.eclipse.jgit.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.http.server;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.junit;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.resolver;version="[4.3.2,4.4.0)",
+ org.eclipse.jgit.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.http.server;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.junit;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.4.0,4.5.0)",
  org.junit;version="[4.0.0,5.0.0)"
-Export-Package: org.eclipse.jgit.junit.http;version="4.3.2";
+Export-Package: org.eclipse.jgit.junit.http;version="4.4.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.junit,
    javax.servlet.http,
diff --git a/org.eclipse.jgit.junit.http/pom.xml b/org.eclipse.jgit.junit.http/pom.xml
index 43fdb8a..0c2a947 100644
--- a/org.eclipse.jgit.junit.http/pom.xml
+++ b/org.eclipse.jgit.junit.http/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit.http</artifactId>
diff --git a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
index 89171bc..874f2c6 100644
--- a/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.junit/META-INF/MANIFEST.MF
@@ -2,27 +2,27 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.junit
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Import-Package: org.eclipse.jgit.api;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.api.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.dircache;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.pack;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.merge;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.treewalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util.io;version="[4.3.2,4.4.0)",
+Import-Package: org.eclipse.jgit.api;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.api.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.dircache;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.merge;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.treewalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util.io;version="[4.4.0,4.5.0)",
  org.junit;version="[4.0.0,5.0.0)"
-Export-Package: org.eclipse.jgit.junit;version="4.3.2";
+Export-Package: org.eclipse.jgit.junit;version="4.4.0";
   uses:="org.eclipse.jgit.dircache,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
diff --git a/org.eclipse.jgit.junit/pom.xml b/org.eclipse.jgit.junit/pom.xml
index bb2b677..35bae0f 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.junit</artifactId>
diff --git a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
index 53d74cf..2a61378 100644
--- a/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server.test/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server.test
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
@@ -27,11 +27,11 @@
  org.eclipse.jetty.util.log;version="[9.0.0,10.0.0)",
  org.eclipse.jetty.util.security;version="[9.0.0,10.0.0)",
  org.eclipse.jetty.util.thread;version="[9.0.0,10.0.0)",
- org.eclipse.jgit.junit.http;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.server.fs;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.test;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
+ org.eclipse.jgit.junit.http;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.test;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.0.0,5.0.0)",
  org.junit.runner;version="[4.0.0,5.0.0)",
diff --git a/org.eclipse.jgit.lfs.server.test/pom.xml b/org.eclipse.jgit.lfs.server.test/pom.xml
index 05ee6f2..5d55701 100644
--- a/org.eclipse.jgit.lfs.server.test/pom.xml
+++ b/org.eclipse.jgit.lfs.server.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server.test</artifactId>
diff --git a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
index d156900..0ccdc28 100644
--- a/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.server/META-INF/MANIFEST.MF
@@ -2,19 +2,19 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.lfs.server
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.lfs.server;version="4.3.2";
+Export-Package: org.eclipse.jgit.lfs.server;version="4.4.0";
   uses:="javax.servlet.http,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.fs;version="4.3.2";
+ org.eclipse.jgit.lfs.server.fs;version="4.4.0";
   uses:="javax.servlet,
    javax.servlet.http,
    org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib",
- org.eclipse.jgit.lfs.server.internal;version="4.3.2";x-internal:=true,
- org.eclipse.jgit.lfs.server.s3;version="4.3.2";
+ org.eclipse.jgit.lfs.server.internal;version="4.4.0";x-internal:=true,
+ org.eclipse.jgit.lfs.server.s3;version="4.4.0";
   uses:="org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.lfs.lib"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
@@ -24,12 +24,12 @@
  javax.servlet.http;version="[3.1.0,4.0.0)",
  org.apache.http;version="[4.3.0,5.0.0)",
  org.apache.http.client;version="[4.3.0,5.0.0)",
- org.eclipse.jgit.annotations;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.http;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.http.apache;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)"
+ org.eclipse.jgit.annotations;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.http;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.http.apache;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)"
diff --git a/org.eclipse.jgit.lfs.server/pom.xml b/org.eclipse.jgit.lfs.server/pom.xml
index 0a81e33..b56eb59 100644
--- a/org.eclipse.jgit.lfs.server/pom.xml
+++ b/org.eclipse.jgit.lfs.server/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.server</artifactId>
diff --git a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
index 173b0eb..5fa9248 100644
--- a/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs.test/META-INF/MANIFEST.MF
@@ -2,18 +2,18 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.lfs.test
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Import-Package: org.eclipse.jgit.junit;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
+Import-Package: org.eclipse.jgit.junit;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
  org.hamcrest.core;version="[1.1.0,2.0.0)",
  org.junit;version="[4.0.0,5.0.0)",
  org.junit.runner;version="[4.0.0,5.0.0)",
  org.junit.runners;version="[4.0.0,5.0.0)"
-Export-Package: org.eclipse.jgit.lfs.test;version="4.3.2";x-friends:="org.eclipse.jgit.lfs.server.test"
+Export-Package: org.eclipse.jgit.lfs.test;version="4.4.0";x-friends:="org.eclipse.jgit.lfs.server.test"
 
diff --git a/org.eclipse.jgit.lfs.test/pom.xml b/org.eclipse.jgit.lfs.test/pom.xml
index 8e5d28b..7d7cc95 100644
--- a/org.eclipse.jgit.lfs.test/pom.xml
+++ b/org.eclipse.jgit.lfs.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs.test</artifactId>
diff --git a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
index 30baf05..ab36c91 100644
--- a/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.lfs/META-INF/MANIFEST.MF
@@ -2,14 +2,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.lfs
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
-Export-Package: org.eclipse.jgit.lfs.errors;version="4.3.2",
- org.eclipse.jgit.lfs.internal;version="4.3.2";x-friends:="org.eclipse.jgit.lfs.test",
- org.eclipse.jgit.lfs.lib;version="4.3.2"
+Export-Package: org.eclipse.jgit.lfs.errors;version="4.4.0",
+ org.eclipse.jgit.lfs.internal;version="4.4.0";x-friends:="org.eclipse.jgit.lfs.test",
+ org.eclipse.jgit.lfs.lib;version="4.4.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Import-Package: org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)"
+Import-Package: org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)"
diff --git a/org.eclipse.jgit.lfs/pom.xml b/org.eclipse.jgit.lfs/pom.xml
index b0f543d..f264ca2 100644
--- a/org.eclipse.jgit.lfs/pom.xml
+++ b/org.eclipse.jgit.lfs/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.lfs</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 3d13c71..8bc8e12 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="4.3.2.qualifier"
+      version="4.4.0.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 81a8c3b..fbfba38 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
index f2597a4..278098c 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.http.apache"
       label="%featureName"
-      version="4.3.2.qualifier"
+      version="4.4.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
index ca0fdca..d138eb4 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.http.apache.feature/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
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 829ef0a..14eb8fd 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="4.3.2.qualifier"
+      version="4.4.0.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 6b900d4..ae04e00 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
index 829c056..86166d4 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.lfs"
       label="%featureName"
-      version="4.3.2.qualifier"
+      version="4.4.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
index bf96616..33760e1 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.lfs.feature/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
index 73a9a13..3d0e9f2 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.pgm"
       label="%featureName"
-      version="4.3.2.qualifier"
+      version="4.4.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
@@ -31,8 +31,8 @@
          version="0.0.0"/>
 
    <requires>
-      <import feature="org.eclipse.jgit" version="4.3.0" match="equivalent"/>
-      <import feature="org.eclipse.jgit.lfs" version="4.3.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit" version="4.4.0" match="equivalent"/>
+      <import feature="org.eclipse.jgit.lfs" version="4.4.0" match="equivalent"/>
    </requires>
 
    <plugin
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
index 2628721..ca24de0 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.feature/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/feature.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/feature.xml
index 4cb5cb7..4173a1c 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/feature.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.jgit.pgm.source"
       label="%featureName"
-      version="4.3.2.qualifier"
+      version="4.4.0.qualifier"
       provider-name="%providerName">
 
    <description url="http://www.eclipse.org/jgit/">
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/pom.xml
index c5015c6..4006866 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.pgm.source.feature/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
index 1410d68..cc41128 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.repository/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.repository</artifactId>
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 4d49aae..f63414b 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="4.3.2.qualifier"
+      version="4.4.0.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 204026b..e2dbeb0 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <groupId>org.eclipse.jgit.feature</groupId>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
index 4e1f66f..46acbcb 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/META-INF/MANIFEST.MF
@@ -2,4 +2,4 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: JGit Target Platform Bundle
 Bundle-SymbolicName: org.eclipse.jgit.target
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.target b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.target
index e506aec..d8cacb4 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.target
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.target
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?pde?>
 <!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
-<target name="jgit-4.5" sequenceNumber="1455835295">
+<target name="jgit-4.6" sequenceNumber="1462141948">
   <locations>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="org.eclipse.jetty.client" version="9.2.13.v20150730"/>
@@ -23,8 +23,8 @@
       <repository id="jetty-9.2.13" location="http://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.2.13.v20150730/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
-      <unit id="org.apache.ant" version="1.9.4.v201504302020"/>
-      <unit id="org.apache.ant.source" version="1.9.4.v201504302020"/>
+      <unit id="org.apache.ant" version="1.9.6.v201510161327"/>
+      <unit id="org.apache.ant.source" version="1.9.6.v201510161327"/>
       <unit id="org.apache.commons.compress" version="1.6.0.v201310281400"/>
       <unit id="org.apache.commons.compress.source" version="1.6.0.v201310281400"/>
       <unit id="org.apache.commons.logging" version="1.1.1.v201101211721"/>
@@ -48,8 +48,8 @@
       <unit id="com.google.gson" version="2.2.4.v201311231704"/>
       <unit id="com.jcraft.jsch" version="0.1.53.v201508180515"/>
       <unit id="com.jcraft.jsch.source" version="0.1.53.v201508180515"/>
-      <unit id="org.junit" version="4.11.0.v201303080030"/>
-      <unit id="org.junit.source" version="4.11.0.v201303080030"/>
+      <unit id="org.junit" version="4.12.0.v201504281640"/>
+      <unit id="org.junit.source" version="4.12.0.v201504281640"/>
       <unit id="javax.servlet" version="3.1.0.v201410161800"/>
       <unit id="javax.servlet.source" version="3.1.0.v201410161800"/>
       <unit id="org.tukaani.xz" version="1.3.0.v201308270617"/>
@@ -58,11 +58,11 @@
       <unit id="org.slf4j.api.source" version="1.7.2.v20121108-1250"/>
       <unit id="org.slf4j.impl.log4j12" version="1.7.2.v20131105-2200"/>
       <unit id="org.slf4j.impl.log4j12.source" version="1.7.2.v20131105-2200"/>
-      <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/S20151204220443/repository/"/>
+      <repository location="http://download.eclipse.org/tools/orbit/downloads/drops/S20160501200945/repository/"/>
     </location>
     <location includeMode="slicer" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="true" type="InstallableUnit">
       <unit id="org.eclipse.osgi" version="0.0.0"/>
-      <repository location="http://download.eclipse.org/releases/mars/"/>
+      <repository location="http://download.eclipse.org/releases/neon/"/>
     </location>
   </locations>
 </target>
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.tpd
index 3963361..83a68dd 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/jgit-4.6.tpd
@@ -1,8 +1,8 @@
-target "jgit-4.5" with source configurePhase
+target "jgit-4.6" with source configurePhase
 
 include "projects/jetty-9.2.13.tpd"
-include "orbit/S20151204220443-Neon.tpd"
+include "orbit/S20160501200945-Neon.tpd"
 
-location "http://download.eclipse.org/releases/mars/" {
+location "http://download.eclipse.org/releases/neon/" {
 	org.eclipse.osgi lazy
 }
\ No newline at end of file
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/S20151204220443-Neon.tpd b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/S20160501200945-Neon.tpd
similarity index 86%
rename from org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/S20151204220443-Neon.tpd
rename to org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/S20160501200945-Neon.tpd
index 3afdbaa..a5d87e9 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/S20151204220443-Neon.tpd
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/orbit/S20160501200945-Neon.tpd
@@ -1,9 +1,9 @@
-target "S20151204220443-Neon" with source configurePhase
+target "S20160501200945-Neon" with source configurePhase
 // see http://download.eclipse.org/tools/orbit/downloads/
 
-location "http://download.eclipse.org/tools/orbit/downloads/drops/S20151204220443/repository/" {
-	org.apache.ant [1.9.4.v201504302020,1.9.4.v201504302020]
-	org.apache.ant.source [1.9.4.v201504302020,1.9.4.v201504302020]
+location "http://download.eclipse.org/tools/orbit/downloads/drops/S20160501200945/repository/" {
+	org.apache.ant [1.9.6.v201510161327,1.9.6.v201510161327]
+	org.apache.ant.source [1.9.6.v201510161327,1.9.6.v201510161327]
 	org.apache.commons.compress [1.6.0.v201310281400,1.6.0.v201310281400]
 	org.apache.commons.compress.source [1.6.0.v201310281400,1.6.0.v201310281400]
 	org.apache.commons.logging [1.1.1.v201101211721,1.1.1.v201101211721]
@@ -27,8 +27,8 @@
 	com.google.gson [2.2.4.v201311231704,2.2.4.v201311231704]
 	com.jcraft.jsch [0.1.53.v201508180515,0.1.53.v201508180515]
 	com.jcraft.jsch.source [0.1.53.v201508180515,0.1.53.v201508180515]
-	org.junit [4.11.0.v201303080030,4.11.0.v201303080030]
-	org.junit.source [4.11.0.v201303080030,4.11.0.v201303080030]
+	org.junit [4.12.0.v201504281640,4.12.0.v201504281640]
+	org.junit.source [4.12.0.v201504281640,4.12.0.v201504281640]
 	javax.servlet [3.1.0.v201410161800,3.1.0.v201410161800]
 	javax.servlet.source [3.1.0.v201410161800,3.1.0.v201410161800]
 	org.tukaani.xz [1.3.0.v201308270617,1.3.0.v201308270617]
diff --git a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
index 4696b82..c93065c 100644
--- a/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
+++ b/org.eclipse.jgit.packaging/org.eclipse.jgit.target/pom.xml
@@ -49,7 +49,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>jgit.tycho.parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.target</artifactId>
diff --git a/org.eclipse.jgit.packaging/pom.xml b/org.eclipse.jgit.packaging/pom.xml
index 39b4be9..21d79dd 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>4.3.2-SNAPSHOT</version>
+  <version>4.4.0-SNAPSHOT</version>
   <packaging>pom</packaging>
 
   <name>JGit Tycho Parent</name>
@@ -61,7 +61,7 @@
   <properties>
     <tycho-version>0.23.0</tycho-version>
     <tycho-extras-version>${tycho-version}</tycho-extras-version>
-    <target-platform>jgit-4.5</target-platform>
+    <target-platform>jgit-4.6</target-platform>
   </properties>
 
   <pluginRepositories>
diff --git a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
index 097319d..1f70e98 100644
--- a/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm.test/META-INF/MANIFEST.MF
@@ -2,28 +2,28 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.pgm.test
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-Localization: plugin
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Import-Package: org.eclipse.jgit.api;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.api.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.diff;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.dircache;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="4.3.2",
- org.eclipse.jgit.junit;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.merge;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.pgm;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.pgm.internal;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.pgm.opt;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.treewalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util.io;version="[4.3.2,4.4.0)",
+Import-Package: org.eclipse.jgit.api;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.api.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.diff;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.dircache;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="4.4.0",
+ org.eclipse.jgit.junit;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.merge;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.pgm;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.pgm.internal;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.pgm.opt;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.treewalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util.io;version="[4.4.0,4.5.0)",
  org.hamcrest.core;bundle-version="[1.1.0,2.0.0)",
  org.junit;version="[4.4.0,5.0.0)",
  org.kohsuke.args4j;version="[2.0.12,2.1.0)"
diff --git a/org.eclipse.jgit.pgm.test/pom.xml b/org.eclipse.jgit.pgm.test/pom.xml
index 4225323..ad4a3d4 100644
--- a/org.eclipse.jgit.pgm.test/pom.xml
+++ b/org.eclipse.jgit.pgm.test/pom.xml
@@ -50,7 +50,7 @@
   <parent>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit-parent</artifactId>
-    <version>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm.test</artifactId>
diff --git a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
index ab0c11b..17dd980 100644
--- a/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.pgm
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
 Bundle-Localization: plugin
@@ -26,45 +26,45 @@
  org.eclipse.jetty.util.log;version="[9.0.0,10.0.0)",
  org.eclipse.jetty.util.security;version="[9.0.0,10.0.0)",
  org.eclipse.jetty.util.thread;version="[9.0.0,10.0.0)",
- org.eclipse.jgit.api;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.api.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.archive;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.awtui;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.blame;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.diff;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.dircache;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.gitrepo;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.ketch;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.pack;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.server;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.server.fs;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lfs.server.s3;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.merge;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.notes;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revplot;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk.filter;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.storage.pack;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.http.apache;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.resolver;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.treewalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util.io;version="[4.3.2,4.4.0)",
+ org.eclipse.jgit.api;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.api.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.archive;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.awtui;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.blame;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.diff;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.dircache;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.gitrepo;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.ketch;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.server;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.server.fs;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lfs.server.s3;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.merge;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.notes;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revplot;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk.filter;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.storage.pack;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.http.apache;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.treewalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util.io;version="[4.4.0,4.5.0)",
  org.kohsuke.args4j;version="[2.0.12,2.1.0)",
  org.kohsuke.args4j.spi;version="[2.0.15,2.1.0)"
-Export-Package: org.eclipse.jgit.console;version="4.3.2";
+Export-Package: org.eclipse.jgit.console;version="4.4.0";
   uses:="org.eclipse.jgit.transport,
    org.eclipse.jgit.util",
- org.eclipse.jgit.pgm;version="4.3.2";
+ org.eclipse.jgit.pgm;version="4.4.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.pgm.opt,
@@ -75,11 +75,11 @@
    org.eclipse.jgit.treewalk,
    javax.swing,
    org.eclipse.jgit.transport",
- org.eclipse.jgit.pgm.debug;version="4.3.2";
+ org.eclipse.jgit.pgm.debug;version="4.4.0";
   uses:="org.eclipse.jgit.util.io,
    org.eclipse.jgit.pgm",
- org.eclipse.jgit.pgm.internal;version="4.3.2";x-friends:="org.eclipse.jgit.pgm.test,org.eclipse.jgit.test",
- org.eclipse.jgit.pgm.opt;version="4.3.2";
+ org.eclipse.jgit.pgm.internal;version="4.4.0";x-friends:="org.eclipse.jgit.pgm.test,org.eclipse.jgit.test",
+ org.eclipse.jgit.pgm.opt;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.kohsuke.args4j.spi,
diff --git a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
index 3bbff12..b4a85e5 100644
--- a/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit.pgm/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit.pgm - Sources
 Bundle-SymbolicName: org.eclipse.jgit.pgm.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 4.3.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="4.3.2.qualifier";roots="."
+Bundle-Version: 4.4.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit.pgm;version="4.4.0.qualifier";roots="."
diff --git a/org.eclipse.jgit.pgm/pom.xml b/org.eclipse.jgit.pgm/pom.xml
index 8edb94a..5157344 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.pgm</artifactId>
diff --git a/org.eclipse.jgit.test/META-INF/MANIFEST.MF b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
index 4c47ce5..af35774 100644
--- a/org.eclipse.jgit.test/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.test/META-INF/MANIFEST.MF
@@ -2,52 +2,52 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.test
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Import-Package: com.googlecode.javaewah;version="[0.7.9,0.8.0)",
- org.eclipse.jgit.api;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.api.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.attributes;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.awtui;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.blame;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.diff;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.dircache;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.events;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.fnmatch;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.gitrepo;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.hooks;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.ignore;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.ignore.internal;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.dfs;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.pack;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.internal.storage.reftree;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.junit;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.merge;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.notes;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.patch;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.pgm;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.pgm.internal;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revplot;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk.filter;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.storage.file;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.storage.pack;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.submodule;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.http;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport.resolver;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.treewalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.treewalk.filter;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util.io;version="[4.3.2,4.4.0)",
+ org.eclipse.jgit.api;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.api.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.attributes;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.awtui;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.blame;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.diff;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.dircache;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.events;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.fnmatch;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.gitrepo;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.hooks;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.ignore;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.ignore.internal;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.dfs;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.pack;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.internal.storage.reftree;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.junit;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.merge;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.notes;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.patch;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.pgm;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.pgm.internal;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revplot;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk.filter;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.storage.file;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.storage.pack;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.submodule;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.http;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport.resolver;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.treewalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.treewalk.filter;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util.io;version="[4.4.0,4.5.0)",
  org.hamcrest;version="[1.1.0,2.0.0)",
  org.junit;version="[4.4.0,5.0.0)",
  org.junit.experimental.theories;version="[4.4.0,5.0.0)",
diff --git a/org.eclipse.jgit.test/pom.xml b/org.eclipse.jgit.test/pom.xml
index a52ac4c..bf92211 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit.test</artifactId>
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java
index 9d87f0c..8a07118 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/CommitCommandTest.java
@@ -68,6 +68,7 @@
 import org.eclipse.jgit.lib.PersonIdent;
 import org.eclipse.jgit.lib.RefUpdate;
 import org.eclipse.jgit.lib.RefUpdate.Result;
+import org.eclipse.jgit.lib.ReflogEntry;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.lib.StoredConfig;
 import org.eclipse.jgit.revwalk.RevCommit;
@@ -436,6 +437,36 @@ public void commitAfterSquashMerge() throws Exception {
 		}
 	}
 
+	@Test
+	public void testReflogs() throws Exception {
+		try (Git git = new Git(db)) {
+			writeTrashFile("f", "1");
+			git.add().addFilepattern("f").call();
+			git.commit().setMessage("c1").call();
+			writeTrashFile("f", "2");
+			git.commit().setMessage("c2").setAll(true).setReflogComment(null)
+					.call();
+			writeTrashFile("f", "3");
+			git.commit().setMessage("c3").setAll(true)
+					.setReflogComment("testRl").call();
+
+			db.getReflogReader(Constants.HEAD).getReverseEntries();
+
+			assertEquals("testRl;commit (initial): c1;", reflogComments(
+					db.getReflogReader(Constants.HEAD).getReverseEntries()));
+			assertEquals("testRl;commit (initial): c1;", reflogComments(
+					db.getReflogReader(db.getBranch()).getReverseEntries()));
+		}
+	}
+
+	private static String reflogComments(List<ReflogEntry> entries) {
+		StringBuffer b = new StringBuffer();
+		for (ReflogEntry e : entries) {
+			b.append(e.getComment()).append(";");
+		}
+		return b.toString();
+	}
+
 	@Test(expected = WrongRepositoryStateException.class)
 	public void commitAmendOnInitialShouldFail() throws Exception {
 		try (Git git = new Git(db)) {
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java
index 11a0924..74790f7 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/dfs/DfsInserterTest.java
@@ -45,6 +45,7 @@
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
@@ -97,6 +98,7 @@ public void testReadFromInserterSmallObjects() throws IOException {
 		assertEquals(0, db.getObjectDatabase().listPacks().size());
 
 		ObjectReader reader = ins.newReader();
+		assertSame(ins, reader.getCreatedFromInserter());
 		assertEquals("foo", readString(reader.open(id1)));
 		assertEquals("bar", readString(reader.open(id2)));
 		assertEquals(0, db.getObjectDatabase().listPacks().size());
@@ -118,6 +120,7 @@ public void testReadFromInserterLargerObjects() throws IOException {
 		assertEquals(0, db.getObjectDatabase().listPacks().size());
 
 		ObjectReader reader = ins.newReader();
+		assertSame(ins, reader.getCreatedFromInserter());
 		assertTrue(Arrays.equals(data, readStream(reader.open(id1))));
 		assertEquals(0, db.getObjectDatabase().listPacks().size());
 		ins.flush();
@@ -136,6 +139,7 @@ public void testReadFromFallback() throws IOException {
 		assertEquals(1, db.getObjectDatabase().listPacks().size());
 
 		ObjectReader reader = ins.newReader();
+		assertSame(ins, reader.getCreatedFromInserter());
 		assertEquals("foo", readString(reader.open(id1)));
 		assertEquals("bar", readString(reader.open(id2)));
 		assertEquals(1, db.getObjectDatabase().listPacks().size());
@@ -154,6 +158,7 @@ public void testReaderResolve() throws IOException {
 		assertFalse(abbr1.equals(abbr2));
 
 		ObjectReader reader = ins.newReader();
+		assertSame(ins, reader.getCreatedFromInserter());
 		Collection<ObjectId> objs;
 		objs = reader.resolve(AbbreviatedObjectId.fromString(abbr1));
 		assertEquals(1, objs.size());
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java
index 5578c03..fbe7dd0 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutTest.java
@@ -798,6 +798,7 @@ public void testUntrackedConflicts() throws IOException {
 			fail("didn't get the expected exception");
 		} catch (CheckoutConflictException e) {
 			assertConflict("foo");
+			assertEquals("foo", e.getConflictingFiles()[0]);
 			assertWorkDir(mkmap("foo", "bar", "other", "other"));
 			assertIndex(mk("other"));
 		}
@@ -885,6 +886,7 @@ public void testCheckoutHierarchy() throws IOException {
 			assertWorkDir(mkmap("a", "a", "b/c", "b/c", "d", "d", "e/f",
 					"e/f", "e/g", "e/g3"));
 			assertConflict("e/g");
+			assertEquals("e/g", e.getConflictingFiles()[0]);
 		}
 	}
 
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java
index 1515a07..19181f5 100644
--- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java
@@ -89,12 +89,54 @@ public void nullForEmailShouldThrowIllegalArgumentException() {
 
 	@Test
 	public void testToExternalStringTrimsNameAndEmail() throws Exception {
-		PersonIdent personIdent = new PersonIdent("  A U Thor  ",
-				"  author@example.com  ");
+		PersonIdent personIdent = new PersonIdent(" \u0010A U Thor  ",
+				"  author@example.com \u0009");
+
+		assertEquals(" \u0010A U Thor  ", personIdent.getName());
+		assertEquals("  author@example.com \u0009", personIdent.getEmailAddress());
 
 		String externalString = personIdent.toExternalString();
-
 		assertTrue(externalString.startsWith("A U Thor <author@example.com>"));
 	}
 
+	@Test
+	public void testToExternalStringTrimsAllWhitespace() {
+		String ws = "  \u0001 \n ";
+		PersonIdent personIdent = new PersonIdent(ws, ws);
+		assertEquals(ws, personIdent.getName());
+		assertEquals(ws, personIdent.getEmailAddress());
+
+		String externalString = personIdent.toExternalString();
+		assertTrue(externalString.startsWith(" <>"));
+	}
+
+	@Test
+	public void testToExternalStringTrimsOtherBadCharacters() {
+		String name = " Foo\r\n<Bar> ";
+		String email = " Baz>\n\u1234<Quux ";
+		PersonIdent personIdent = new PersonIdent(name, email);
+		assertEquals(name, personIdent.getName());
+		assertEquals(email, personIdent.getEmailAddress());
+
+		String externalString = personIdent.toExternalString();
+		assertTrue(externalString.startsWith("Foo\rBar <Baz\u1234Quux>"));
+	}
+
+	@Test
+	public void testEmptyNameAndEmail() {
+		PersonIdent personIdent = new PersonIdent("", "");
+		assertEquals("", personIdent.getName());
+		assertEquals("", personIdent.getEmailAddress());
+
+		String externalString = personIdent.toExternalString();
+		assertTrue(externalString.startsWith(" <>"));
+	}
+
+	@Test
+	public void testAppendSanitized() {
+		StringBuilder r = new StringBuilder();
+		PersonIdent.appendSanitized(r, " Baz>\n\u1234<Quux ");
+		assertEquals("Baz\u1234Quux", r.toString());
+	}
 }
+
diff --git a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
index db339e0..b1c6503 100644
--- a/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit.ui/META-INF/MANIFEST.MF
@@ -3,14 +3,14 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit.ui
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Vendor: %provider_name
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Export-Package: org.eclipse.jgit.awtui;version="4.3.2"
-Import-Package: org.eclipse.jgit.errors;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.lib;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.nls;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revplot;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.revwalk;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.transport;version="[4.3.2,4.4.0)",
- org.eclipse.jgit.util;version="[4.3.2,4.4.0)"
+Export-Package: org.eclipse.jgit.awtui;version="4.4.0"
+Import-Package: org.eclipse.jgit.errors;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.lib;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.nls;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revplot;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.revwalk;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.transport;version="[4.4.0,4.5.0)",
+ org.eclipse.jgit.util;version="[4.4.0,4.5.0)"
diff --git a/org.eclipse.jgit.ui/pom.xml b/org.eclipse.jgit.ui/pom.xml
index fdd6dad..2784a94 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-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 f94c22c..a3d1a92 100644
--- a/org.eclipse.jgit/META-INF/MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/MANIFEST.MF
@@ -2,12 +2,12 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %plugin_name
 Bundle-SymbolicName: org.eclipse.jgit
-Bundle-Version: 4.3.2.qualifier
+Bundle-Version: 4.4.0.qualifier
 Bundle-Localization: plugin
 Bundle-Vendor: %provider_name
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.jgit.annotations;version="4.3.2",
- org.eclipse.jgit.api;version="4.3.2";
+Export-Package: org.eclipse.jgit.annotations;version="4.4.0",
+ org.eclipse.jgit.api;version="4.4.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff,
@@ -21,47 +21,50 @@
    org.eclipse.jgit.submodule,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.api.errors;version="4.3.2";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.errors",
- org.eclipse.jgit.attributes;version="4.3.2",
- org.eclipse.jgit.blame;version="4.3.2";
+ org.eclipse.jgit.api.errors;version="4.4.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.errors",
+ org.eclipse.jgit.attributes;version="4.4.0",
+ org.eclipse.jgit.blame;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff",
- org.eclipse.jgit.diff;version="4.3.2";
+ org.eclipse.jgit.diff;version="4.4.0";
   uses:="org.eclipse.jgit.patch,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util",
- org.eclipse.jgit.dircache;version="4.3.2";
+ org.eclipse.jgit.dircache;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.util,
    org.eclipse.jgit.events,
    org.eclipse.jgit.attributes",
- org.eclipse.jgit.errors;version="4.3.2";
+ org.eclipse.jgit.errors;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.internal.storage.pack,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.dircache",
- org.eclipse.jgit.events;version="4.3.2";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.fnmatch;version="4.3.2",
- org.eclipse.jgit.gitrepo;version="4.3.2";
+ org.eclipse.jgit.events;version="4.4.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.fnmatch;version="4.4.0",
+ org.eclipse.jgit.gitrepo;version="4.4.0";
   uses:="org.eclipse.jgit.api,
    org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.xml.sax.helpers,
    org.xml.sax",
- org.eclipse.jgit.gitrepo.internal;version="4.3.2";x-internal:=true,
- org.eclipse.jgit.hooks;version="4.3.2";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.ignore;version="4.3.2",
- org.eclipse.jgit.ignore.internal;version="4.3.2";x-friends:="org.eclipse.jgit.test",
- org.eclipse.jgit.internal;version="4.3.2";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.test",
- org.eclipse.jgit.internal.ketch;version="4.3.2";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.dfs;version="4.3.2";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.server",
- org.eclipse.jgit.internal.storage.file;version="4.3.2";
+ org.eclipse.jgit.gitrepo.internal;version="4.4.0";x-internal:=true,
+ org.eclipse.jgit.hooks;version="4.4.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.ignore;version="4.4.0",
+ org.eclipse.jgit.ignore.internal;version="4.4.0";x-friends:="org.eclipse.jgit.test",
+ org.eclipse.jgit.internal;version="4.4.0";x-friends:="org.eclipse.jgit.test,org.eclipse.jgit.http.test",
+ org.eclipse.jgit.internal.ketch;version="4.4.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.dfs;version="4.4.0";
+  x-friends:="org.eclipse.jgit.test,
+   org.eclipse.jgit.http.server,
+   org.eclipse.jgit.http.test",
+ org.eclipse.jgit.internal.storage.file;version="4.4.0";
   x-friends:="org.eclipse.jgit.test,
    org.eclipse.jgit.junit,
    org.eclipse.jgit.junit.http,
@@ -69,9 +72,9 @@
    org.eclipse.jgit.lfs.server,
    org.eclipse.jgit.pgm,
    org.eclipse.jgit.pgm.test",
- org.eclipse.jgit.internal.storage.pack;version="4.3.2";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.internal.storage.reftree;version="4.3.2";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
- org.eclipse.jgit.lib;version="4.3.2";
+ org.eclipse.jgit.internal.storage.pack;version="4.4.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.internal.storage.reftree;version="4.4.0";x-friends:="org.eclipse.jgit.junit,org.eclipse.jgit.test,org.eclipse.jgit.pgm",
+ org.eclipse.jgit.lib;version="4.4.0";
   uses:="org.eclipse.jgit.revwalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util,
@@ -81,32 +84,32 @@
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.transport,
    org.eclipse.jgit.submodule",
- org.eclipse.jgit.merge;version="4.3.2";
+ org.eclipse.jgit.merge;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.dircache,
    org.eclipse.jgit.api",
- org.eclipse.jgit.nls;version="4.3.2",
- org.eclipse.jgit.notes;version="4.3.2";
+ org.eclipse.jgit.nls;version="4.4.0",
+ org.eclipse.jgit.notes;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.merge",
- org.eclipse.jgit.patch;version="4.3.2";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.diff",
- org.eclipse.jgit.revplot;version="4.3.2";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.revwalk",
- org.eclipse.jgit.revwalk;version="4.3.2";
+ org.eclipse.jgit.patch;version="4.4.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.diff",
+ org.eclipse.jgit.revplot;version="4.4.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.revwalk",
+ org.eclipse.jgit.revwalk;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.treewalk,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.diff,
    org.eclipse.jgit.revwalk.filter",
- org.eclipse.jgit.revwalk.filter;version="4.3.2";uses:="org.eclipse.jgit.revwalk,org.eclipse.jgit.lib,org.eclipse.jgit.util",
- org.eclipse.jgit.storage.file;version="4.3.2";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.util",
- org.eclipse.jgit.storage.pack;version="4.3.2";uses:="org.eclipse.jgit.lib",
- org.eclipse.jgit.submodule;version="4.3.2";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.treewalk.filter,org.eclipse.jgit.treewalk",
- org.eclipse.jgit.transport;version="4.3.2";
+ org.eclipse.jgit.revwalk.filter;version="4.4.0";uses:="org.eclipse.jgit.revwalk,org.eclipse.jgit.lib,org.eclipse.jgit.util",
+ org.eclipse.jgit.storage.file;version="4.4.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.util",
+ org.eclipse.jgit.storage.pack;version="4.4.0";uses:="org.eclipse.jgit.lib",
+ org.eclipse.jgit.submodule;version="4.4.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.treewalk.filter,org.eclipse.jgit.treewalk",
+ org.eclipse.jgit.transport;version="4.4.0";
   uses:="org.eclipse.jgit.transport.resolver,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.internal.storage.pack,
@@ -118,22 +121,22 @@
    org.eclipse.jgit.transport.http,
    org.eclipse.jgit.errors,
    org.eclipse.jgit.storage.pack",
- org.eclipse.jgit.transport.http;version="4.3.2";uses:="javax.net.ssl",
- org.eclipse.jgit.transport.resolver;version="4.3.2";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.transport",
- org.eclipse.jgit.treewalk;version="4.3.2";
+ org.eclipse.jgit.transport.http;version="4.4.0";uses:="javax.net.ssl",
+ org.eclipse.jgit.transport.resolver;version="4.4.0";uses:="org.eclipse.jgit.lib,org.eclipse.jgit.transport",
+ org.eclipse.jgit.treewalk;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.revwalk,
    org.eclipse.jgit.attributes,
    org.eclipse.jgit.treewalk.filter,
    org.eclipse.jgit.util,
    org.eclipse.jgit.dircache",
- org.eclipse.jgit.treewalk.filter;version="4.3.2";uses:="org.eclipse.jgit.treewalk",
- org.eclipse.jgit.util;version="4.3.2";
+ org.eclipse.jgit.treewalk.filter;version="4.4.0";uses:="org.eclipse.jgit.treewalk",
+ org.eclipse.jgit.util;version="4.4.0";
   uses:="org.eclipse.jgit.lib,
    org.eclipse.jgit.transport.http,
    org.eclipse.jgit.storage.file,
    org.ietf.jgss",
- org.eclipse.jgit.util.io;version="4.3.2"
+ org.eclipse.jgit.util.io;version="4.4.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Require-Bundle: com.jcraft.jsch;bundle-version="[0.1.37,0.2.0)"
 Import-Package: com.googlecode.javaewah;version="[0.7.9,0.8.0)",
diff --git a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
index 3bf02b7..0e3dff8 100644
--- a/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
+++ b/org.eclipse.jgit/META-INF/SOURCE-MANIFEST.MF
@@ -3,5 +3,5 @@
 Bundle-Name: org.eclipse.jgit - Sources
 Bundle-SymbolicName: org.eclipse.jgit.source
 Bundle-Vendor: Eclipse.org - JGit
-Bundle-Version: 4.3.2.qualifier
-Eclipse-SourceBundle: org.eclipse.jgit;version="4.3.2.qualifier";roots="."
+Bundle-Version: 4.4.0.qualifier
+Eclipse-SourceBundle: org.eclipse.jgit;version="4.4.0.qualifier";roots="."
diff --git a/org.eclipse.jgit/pom.xml b/org.eclipse.jgit/pom.xml
index 40d15c8..0ae6b5d 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>4.3.2-SNAPSHOT</version>
+    <version>4.4.0-SNAPSHOT</version>
   </parent>
 
   <artifactId>org.eclipse.jgit</artifactId>
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 992e10b..a99bd7e 100644
--- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
+++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -21,6 +21,7 @@
 atLeastOnePatternIsRequired=At least one pattern is required.
 atLeastTwoFiltersNeeded=At least two filters needed.
 atomicPushNotSupported=Atomic push not supported.
+atomicRefUpdatesNotSupported=Atomic ref updates not supported
 authenticationNotSupported=authentication not supported
 badBase64InputCharacterAt=Bad Base64 input character at {0} : {1} (decimal)
 badEntryDelimiter=Bad entry delimiter
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java
index 0abb8ba..e54169a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java
@@ -124,6 +124,8 @@ public class CommitCommand extends GitCommand<RevCommit> {
 
 	private String reflogComment;
 
+	private boolean useDefaultReflogMessage = true;
+
 	/**
 	 * Setting this option bypasses the pre-commit and commit-msg hooks.
 	 */
@@ -258,7 +260,7 @@ public RevCommit call() throws GitAPIException, NoHeadException,
 				RevCommit revCommit = rw.parseCommit(commitId);
 				RefUpdate ru = repo.updateRef(Constants.HEAD);
 				ru.setNewObjectId(commitId);
-				if (reflogComment != null) {
+				if (!useDefaultReflogMessage) {
 					ru.setRefLogMessage(reflogComment, false);
 				} else {
 					String prefix = amend ? "commit (amend): " //$NON-NLS-1$
@@ -790,10 +792,13 @@ public CommitCommand setInsertChangeId(boolean insertChangeId) {
 	 * Override the message written to the reflog
 	 *
 	 * @param reflogComment
+	 *            the comment to be written into the reflog or <code>null</code>
+	 *            to specify that no reflog should be written
 	 * @return {@code this}
 	 */
 	public CommitCommand setReflogComment(String reflogComment) {
 		this.reflogComment = reflogComment;
+		useDefaultReflogMessage = false;
 		return this;
 	}
 
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/errors/CheckoutConflictException.java b/org.eclipse.jgit/src/org/eclipse/jgit/errors/CheckoutConflictException.java
index db29f3f..b6010b6 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/errors/CheckoutConflictException.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/errors/CheckoutConflictException.java
@@ -56,6 +56,8 @@
 public class CheckoutConflictException extends IOException {
 	private static final long serialVersionUID = 1L;
 
+	private final String[] conflicting;
+
 	/**
 	 * Construct a CheckoutConflictException for the specified file
 	 *
@@ -63,6 +65,7 @@ public class CheckoutConflictException extends IOException {
 	 */
 	public CheckoutConflictException(String file) {
 		super(MessageFormat.format(JGitText.get().checkoutConflictWithFile, file));
+		conflicting = new String[] { file };
 	}
 
 	/**
@@ -72,6 +75,16 @@ public CheckoutConflictException(String file) {
 	 */
 	public CheckoutConflictException(String[] files) {
 		super(MessageFormat.format(JGitText.get().checkoutConflictWithFiles, buildList(files)));
+		conflicting = files;
+	}
+
+	/**
+	 * @return the relative paths of the conflicting files (relative to the
+	 *         working directory root).
+	 * @since 4.4
+	 */
+	public String[] getConflictingFiles() {
+		return conflicting;
 	}
 
 	private static String buildList(String[] files) {
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 7740a2b..dc640fe 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -80,6 +80,7 @@ public static JGitText get() {
 	/***/ public String atLeastOnePatternIsRequired;
 	/***/ public String atLeastTwoFiltersNeeded;
 	/***/ public String atomicPushNotSupported;
+	/***/ public String atomicRefUpdatesNotSupported;
 	/***/ public String authenticationNotSupported;
 	/***/ public String badBase64InputCharacterAt;
 	/***/ public String badEntryDelimiter;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
index e5ae980..f5673e8 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsInserter.java
@@ -601,6 +601,11 @@ public Set<ObjectId> getShallowCommits() throws IOException {
 		}
 
 		@Override
+		public ObjectInserter getCreatedFromInserter() {
+			return DfsInserter.this;
+		}
+
+		@Override
 		public void close() {
 			ctx.close();
 		}
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 96f1d54..4eabb03 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
@@ -1189,7 +1189,7 @@ void representation(DfsObjectRepresentation r, final long pos,
 		}
 	}
 
-	private boolean isCorrupt(long offset) {
+	boolean isCorrupt(long offset) {
 		LongList list = corruptObjects;
 		if (list == null)
 			return false;
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 1665c2c..66421e2 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
@@ -476,7 +476,7 @@ private List<DfsObjectToPack> findAllFromPack(DfsPackFile pack,
 		PackIndex idx = pack.getPackIndex(this);
 		for (ObjectToPack otp : objects) {
 			long p = idx.findOffset(otp);
-			if (0 < p) {
+			if (0 < p && !pack.isCorrupt(p)) {
 				otp.setOffset(p);
 				tmp.add((DfsObjectToPack) otp);
 			}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
index b312835..de18ead 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/InMemoryRepository.java
@@ -252,11 +252,20 @@ public void setReadAheadBytes(int b) {
 		}
 	}
 
-	private class MemRefDatabase extends DfsRefDatabase {
+	/**
+	 * A ref database storing all refs in-memory.
+	 * <p>
+	 * This class is protected (and not private) to facilitate testing using
+	 * subclasses of InMemoryRepository.
+	 */
+    protected class MemRefDatabase extends DfsRefDatabase {
 		private final ConcurrentMap<String, Ref> refs = new ConcurrentHashMap<String, Ref>();
 		private final ReadWriteLock lock = new ReentrantReadWriteLock(true /* fair */);
 
-		MemRefDatabase() {
+		/**
+		 * Initialize a new in-memory ref database.
+		 */
+		protected MemRefDatabase() {
 			super(InMemoryRepository.this);
 		}
 
@@ -271,7 +280,7 @@ public BatchRefUpdate newBatchUpdate() {
 				@Override
 				public void execute(RevWalk walk, ProgressMonitor monitor)
 						throws IOException {
-					if (performsAtomicTransactions()) {
+					if (performsAtomicTransactions() && isAtomic()) {
 						try {
 							lock.writeLock().lock();
 							batch(getCommands());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
index fb41172..9820e0e 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/ObjectDirectoryInserter.java
@@ -136,7 +136,7 @@ public PackParser newPackParser(InputStream in) throws IOException {
 
 	@Override
 	public ObjectReader newReader() {
-		return new WindowCursor(db);
+		return new WindowCursor(db, this);
 	}
 
 	@Override
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 a555e10..a2c0561 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
@@ -53,6 +53,7 @@
 import java.util.zip.DataFormatException;
 import java.util.zip.Inflater;
 
+import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.errors.StoredObjectRepresentationNotAvailableException;
@@ -69,6 +70,7 @@
 import org.eclipse.jgit.lib.Constants;
 import org.eclipse.jgit.lib.InflaterCache;
 import org.eclipse.jgit.lib.ObjectId;
+import org.eclipse.jgit.lib.ObjectInserter;
 import org.eclipse.jgit.lib.ObjectLoader;
 import org.eclipse.jgit.lib.ObjectReader;
 import org.eclipse.jgit.lib.ProgressMonitor;
@@ -84,10 +86,20 @@ final class WindowCursor extends ObjectReader implements ObjectReuseAsIs {
 
 	private DeltaBaseCache baseCache;
 
+	@Nullable
+	private final ObjectInserter createdFromInserter;
+
 	final FileObjectDatabase db;
 
 	WindowCursor(FileObjectDatabase db) {
 		this.db = db;
+		this.createdFromInserter = null;
+	}
+
+	WindowCursor(FileObjectDatabase db,
+			@Nullable ObjectDirectoryInserter createdFromInserter) {
+		this.db = db;
+		this.createdFromInserter = createdFromInserter;
 	}
 
 	DeltaBaseCache getDeltaBaseCache() {
@@ -329,6 +341,12 @@ int getStreamFileThreshold() {
 		return WindowCache.getStreamFileThreshold();
 	}
 
+	@Override
+	@Nullable
+	public ObjectInserter getCreatedFromInserter() {
+		return createdFromInserter;
+	}
+
 	/** Release the current window cursor. */
 	@Override
 	public void close() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftree/RefTreeBatch.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftree/RefTreeBatch.java
index a55a9f5..1cccd79 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftree/RefTreeBatch.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/reftree/RefTreeBatch.java
@@ -98,8 +98,12 @@ public void execute(RevWalk rw, ProgressMonitor monitor)
 				}
 				if (c.getType() == UPDATE_NONFASTFORWARD) {
 					c.setResult(REJECTED_NONFASTFORWARD);
-					ReceiveCommand.abort(getCommands());
-					return;
+					if (isAtomic()) {
+						ReceiveCommand.abort(getCommands());
+						return;
+					} else {
+						continue;
+					}
 				}
 			}
 			todo.add(new Command(rw, c));
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java
index d7e9308..35cadd3 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/BatchRefUpdate.java
@@ -89,6 +89,9 @@ public class BatchRefUpdate {
 	/** Push certificate associated with this update. */
 	private PushCertificate pushCert;
 
+	/** Whether updates should be atomic. */
+	private boolean atomic;
+
 	/**
 	 * Initialize a new batch update.
 	 *
@@ -98,6 +101,7 @@ public class BatchRefUpdate {
 	protected BatchRefUpdate(RefDatabase refdb) {
 		this.refdb = refdb;
 		this.commands = new ArrayList<ReceiveCommand>();
+		this.atomic = refdb.performsAtomicTransactions();
 	}
 
 	/**
@@ -200,6 +204,36 @@ public boolean isRefLogDisabled() {
 	}
 
 	/**
+	 * Request that all updates in this batch be performed atomically.
+	 * <p>
+	 * When atomic updates are used, either all commands apply successfully, or
+	 * none do. Commands that might have otherwise succeeded are rejected with
+	 * {@code REJECTED_OTHER_REASON}.
+	 * <p>
+	 * This method only works if the underlying ref database supports atomic
+	 * transactions, i.e. {@link RefDatabase#performsAtomicTransactions()} returns
+	 * true. Calling this method with true if the underlying ref database does not
+	 * support atomic transactions will cause all commands to fail with {@code
+	 * REJECTED_OTHER_REASON}.
+	 *
+	 * @param atomic whether updates should be atomic.
+	 * @return {@code this}
+	 * @since 4.4
+	 */
+	public BatchRefUpdate setAtomic(boolean atomic) {
+		this.atomic = atomic;
+		return this;
+	}
+
+	/**
+	 * @return atomic whether updates should be atomic.
+	 * @since 4.4
+	 */
+	public boolean isAtomic() {
+		return atomic;
+	}
+
+	/**
 	 * Set a push certificate associated with this update.
 	 * <p>
 	 * This usually includes commands to update the refs in this batch, but is not
@@ -271,6 +305,10 @@ public BatchRefUpdate addCommand(Collection<ReceiveCommand> cmd) {
 	 * <p>
 	 * The default implementation of this method performs a sequential reference
 	 * update over each reference.
+	 * <p>
+	 * Implementations must respect the atomicity requirements of the underlying
+	 * database as described in {@link #setAtomic(boolean)} and {@link
+	 * RefDatabase#performsAtomicTransactions()}.
 	 *
 	 * @param walk
 	 *            a RevWalk to parse tags in case the storage system wants to
@@ -284,6 +322,17 @@ public BatchRefUpdate addCommand(Collection<ReceiveCommand> cmd) {
 	 */
 	public void execute(RevWalk walk, ProgressMonitor monitor)
 			throws IOException {
+
+		if (atomic && !refdb.performsAtomicTransactions()) {
+			for (ReceiveCommand c : commands) {
+				if (c.getResult() == NOT_ATTEMPTED) {
+					c.setResult(REJECTED_OTHER_REASON,
+							JGitText.get().atomicRefUpdatesNotSupported);
+				}
+			}
+			return;
+		}
+
 		monitor.beginTask(JGitText.get().updatingReferences, commands.size());
 		List<ReceiveCommand> commands2 = new ArrayList<ReceiveCommand>(
 				commands.size());
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
index e48386d..088dcdf 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/Config.java
@@ -855,7 +855,8 @@ private ConfigSnapshot unsetSection(final ConfigSnapshot srcState,
 	 *
 	 * <pre>
 	 * [section &quot;subsection&quot;]
-	 *         name = value
+	 *         name = value1
+	 *         name = value2
 	 * </pre>
 	 *
 	 * @param section
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectInserter.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectInserter.java
index d9da65f..4c51279 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectInserter.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectInserter.java
@@ -143,7 +143,18 @@ public PackParser newPackParser(InputStream in) throws IOException {
 		}
 
 		public ObjectReader newReader() {
-			return delegate().newReader();
+			final ObjectReader dr = delegate().newReader();
+			return new ObjectReader.Filter() {
+				@Override
+				protected ObjectReader delegate() {
+					return dr;
+				}
+
+				@Override
+				public ObjectInserter getCreatedFromInserter() {
+					return ObjectInserter.Filter.this;
+				}
+			};
 		}
 
 		public void flush() throws IOException {
@@ -398,6 +409,9 @@ public abstract ObjectId insert(int objectType, long length, InputStream in)
 	 * visible to the repository. The returned reader should only be used from
 	 * the same thread as the inserter. Objects written by this inserter may not
 	 * be visible to {@code this.newReader().newReader()}.
+	 * <p>
+	 * The returned reader should return this inserter instance from {@link
+	 * ObjectReader#getCreatedFromInserter()}.
 	 *
 	 * @since 3.5
 	 * @return reader for any object, including an object recently inserted by
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
index 77cfb03..b23145d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectReader.java
@@ -50,6 +50,7 @@
 import java.util.List;
 import java.util.Set;
 
+import org.eclipse.jgit.annotations.Nullable;
 import org.eclipse.jgit.errors.IncorrectObjectTypeException;
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.internal.storage.pack.ObjectReuseAsIs;
@@ -422,6 +423,17 @@ public BitmapIndex getBitmapIndex() throws IOException {
 	}
 
 	/**
+	 * @return the {@link ObjectInserter} from which this reader was created
+	 *         using {@code inserter.newReader()}, or null if this reader was not
+	 *         created from an inserter.
+	 * @since 4.4
+	 */
+	@Nullable
+	public ObjectInserter getCreatedFromInserter() {
+		return null;
+	}
+
+	/**
 	 * Release any resources used by this reader.
 	 * <p>
 	 * A reader that has been released can be used again, but may need to be
@@ -431,4 +443,108 @@ public BitmapIndex getBitmapIndex() throws IOException {
 	 */
 	@Override
 	public abstract void close();
+
+	/**
+	 * Wraps a delegate ObjectReader.
+	 *
+	 * @since 4.4
+	 */
+	public static abstract class Filter extends ObjectReader {
+		/**
+		 * @return delegate ObjectReader to handle all processing.
+		 * @since 4.4
+		 */
+		protected abstract ObjectReader delegate();
+
+		@Override
+		public ObjectReader newReader() {
+			return delegate().newReader();
+		}
+
+		@Override
+		public AbbreviatedObjectId abbreviate(AnyObjectId objectId)
+				throws IOException {
+			return delegate().abbreviate(objectId);
+		}
+
+		@Override
+		public AbbreviatedObjectId abbreviate(AnyObjectId objectId, int len)
+				throws IOException {
+			return delegate().abbreviate(objectId, len);
+		}
+
+		@Override
+		public Collection<ObjectId> resolve(AbbreviatedObjectId id)
+				throws IOException {
+			return delegate().resolve(id);
+		}
+
+		@Override
+		public boolean has(AnyObjectId objectId) throws IOException {
+			return delegate().has(objectId);
+		}
+
+		@Override
+		public boolean has(AnyObjectId objectId, int typeHint) throws IOException {
+			return delegate().has(objectId, typeHint);
+		}
+
+		@Override
+		public ObjectLoader open(AnyObjectId objectId)
+				throws MissingObjectException, IOException {
+			return delegate().open(objectId);
+		}
+
+		@Override
+		public ObjectLoader open(AnyObjectId objectId, int typeHint)
+				throws MissingObjectException, IncorrectObjectTypeException,
+				IOException {
+			return delegate().open(objectId, typeHint);
+		}
+
+		@Override
+		public Set<ObjectId> getShallowCommits() throws IOException {
+			return delegate().getShallowCommits();
+		}
+
+		@Override
+		public <T extends ObjectId> AsyncObjectLoaderQueue<T> open(
+				Iterable<T> objectIds, boolean reportMissing) {
+			return delegate().open(objectIds, reportMissing);
+		}
+
+		@Override
+		public long getObjectSize(AnyObjectId objectId, int typeHint)
+				throws MissingObjectException, IncorrectObjectTypeException,
+				IOException {
+			return delegate().getObjectSize(objectId, typeHint);
+		}
+
+		@Override
+		public <T extends ObjectId> AsyncObjectSizeQueue<T> getObjectSize(
+				Iterable<T> objectIds, boolean reportMissing) {
+			return delegate().getObjectSize(objectIds, reportMissing);
+		}
+
+		@Override
+		public void setAvoidUnreachableObjects(boolean avoid) {
+			delegate().setAvoidUnreachableObjects(avoid);
+		}
+
+		@Override
+		public BitmapIndex getBitmapIndex() throws IOException {
+			return delegate().getBitmapIndex();
+		}
+
+		@Override
+		@Nullable
+		public ObjectInserter getCreatedFromInserter() {
+			return delegate().getCreatedFromInserter();
+		}
+
+		@Override
+		public void close() {
+			delegate().close();
+		}
+	}
 }
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java
index 2ecc60c..e08a985 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java
@@ -111,6 +111,44 @@ public static void appendTimezone(StringBuilder r, int offset) {
 		r.append(offsetMins);
 	}
 
+	/**
+	 * Sanitize the given string for use in an identity and append to output.
+	 * <p>
+	 * Trims whitespace from both ends and special characters {@code \n < >} that
+	 * interfere with parsing; appends all other characters to the output.
+	 * Analogous to the C git function {@code strbuf_addstr_without_crud}.
+	 *
+	 * @param r
+	 *            string builder to append to.
+	 * @param str
+	 *            input string.
+	 * @since 4.4
+	 */
+	public static void appendSanitized(StringBuilder r, String str) {
+		// Trim any whitespace less than \u0020 as in String#trim().
+		int i = 0;
+		while (i < str.length() && str.charAt(i) <= ' ') {
+			i++;
+		}
+		int end = str.length();
+		while (end > i && str.charAt(end - 1) <= ' ') {
+			end--;
+		}
+
+		for (; i < end; i++) {
+			char c = str.charAt(i);
+			switch (c) {
+				case '\n':
+				case '<':
+				case '>':
+					continue;
+				default:
+					r.append(c);
+					break;
+			}
+		}
+	}
+
 	private final String name;
 
 	private final String emailAddress;
@@ -217,7 +255,12 @@ private PersonIdent(final UserConfig config) {
 	}
 
 	/**
-	 * Construct a {@link PersonIdent}
+	 * Construct a {@link PersonIdent}.
+	 * <p>
+	 * Whitespace in the name and email is preserved for the lifetime of this
+	 * object, but are trimmed by {@link #toExternalString()}. This means that
+	 * parsing the result of {@link #toExternalString()} may not return an
+	 * equivalent instance.
 	 *
 	 * @param aName
 	 * @param aEmailAddress
@@ -276,6 +319,9 @@ public int getTimeZoneOffset() {
 		return tzOffset;
 	}
 
+	/**
+	 * Hashcode is based only on the email address and timestamp.
+	 */
 	public int hashCode() {
 		int hc = getEmailAddress().hashCode();
 		hc *= 31;
@@ -300,9 +346,9 @@ && getEmailAddress().equals(p.getEmailAddress())
 	 */
 	public String toExternalString() {
 		final StringBuilder r = new StringBuilder();
-		r.append(getName().trim());
+		appendSanitized(r, getName());
 		r.append(" <"); //$NON-NLS-1$
-		r.append(getEmailAddress().trim());
+		appendSanitized(r, getEmailAddress());
 		r.append("> "); //$NON-NLS-1$
 		r.append(when / 1000);
 		r.append(' ');
@@ -328,3 +374,4 @@ public String toString() {
 		return r.toString();
 	}
 }
+
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java
index c0c3862..517c8aa 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/RefDatabase.java
@@ -207,8 +207,25 @@ public BatchRefUpdate newBatchUpdate() {
 	}
 
 	/**
-	 * @return if the database performs {@code newBatchUpdate()} as an atomic
-	 *         transaction.
+	 * Whether the database is capable of performing batch updates as atomic
+	 * transactions.
+	 * <p>
+	 * If true, by default {@link BatchRefUpdate} instances will perform updates
+	 * atomically, meaning either all updates will succeed, or all updates will
+	 * fail. It is still possible to turn off this behavior on a per-batch basis
+	 * by calling {@code update.setAtomic(false)}.
+	 * <p>
+	 * If false, {@link BatchRefUpdate} instances will never perform updates
+	 * atomically, and calling {@code update.setAtomic(true)} will cause the
+	 * entire batch to fail with {@code REJECTED_OTHER_REASON}.
+	 * <p>
+	 * This definition of atomicity is stronger than what is provided by
+	 * {@link org.eclipse.jgit.transport.ReceivePack}. {@code ReceivePack} will
+	 * attempt to reject all commands if it knows in advance some commands may
+	 * fail, even if the storage layer does not support atomic transactions. Here,
+	 * atomicity applies even in the case of unforeseeable errors.
+	 *
+	 * @return whether transactions are atomic by default.
 	 * @since 3.6
 	 */
 	public boolean performsAtomicTransactions() {
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
index 8b642bb..e49ee87 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java
@@ -82,6 +82,7 @@
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ProgressMonitor;
 import org.eclipse.jgit.lib.Ref;
+import org.eclipse.jgit.lib.RefDatabase;
 import org.eclipse.jgit.lib.Repository;
 import org.eclipse.jgit.revwalk.AsyncRevObjectQueue;
 import org.eclipse.jgit.revwalk.DepthWalk;
@@ -704,22 +705,22 @@ public PackStatistics getStatistics() {
 		return statistics;
 	}
 
-	private Map<String, Ref> getAdvertisedOrDefaultRefs() {
+	private Map<String, Ref> getAdvertisedOrDefaultRefs() throws IOException {
 		if (refs == null)
-			setAdvertisedRefs(null);
+			setAdvertisedRefs(db.getRefDatabase().getRefs(RefDatabase.ALL));
 		return refs;
 	}
 
 	private void service() throws IOException {
-		if (biDirectionalPipe)
-			sendAdvertisedRefs(new PacketLineOutRefAdvertiser(pckOut));
-		else if (requestValidator instanceof AnyRequestValidator)
-			advertised = Collections.emptySet();
-		else
-			advertised = refIdSet(getAdvertisedOrDefaultRefs().values());
-
 		boolean sendPack;
 		try {
+			if (biDirectionalPipe)
+				sendAdvertisedRefs(new PacketLineOutRefAdvertiser(pckOut));
+			else if (requestValidator instanceof AnyRequestValidator)
+				advertised = Collections.emptySet();
+			else
+				advertised = refIdSet(getAdvertisedOrDefaultRefs().values());
+
 			recvWants();
 			if (wantIds.isEmpty()) {
 				preUploadHook.onBeginNegotiateRound(this, wantIds, 0);
diff --git a/pom.xml b/pom.xml
index 1ff91cd..0b9f4f1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
   <groupId>org.eclipse.jgit</groupId>
   <artifactId>org.eclipse.jgit-parent</artifactId>
   <packaging>pom</packaging>
-  <version>4.3.2-SNAPSHOT</version>
+  <version>4.4.0-SNAPSHOT</version>
 
   <name>JGit - Parent</name>
   <url>${jgit-url}</url>
@@ -195,7 +195,7 @@
     <jgit-last-release-version>4.2.0.201601211800-r</jgit-last-release-version>
     <jsch-version>0.1.53</jsch-version>
     <javaewah-version>0.7.9</javaewah-version>
-    <junit-version>4.11</junit-version>
+    <junit-version>4.12</junit-version>
     <test-fork-count>1C</test-fork-count>
     <args4j-version>2.0.15</args4j-version>
     <commons-compress-version>1.6</commons-compress-version>
@@ -453,6 +453,7 @@
         <configuration>
           <encoding>${project.build.sourceEncoding}</encoding>
           <quiet>true</quiet>
+          <excludePackageNames>org.eclipse.jgit.http.test</excludePackageNames>
           <links>
             <link>http://docs.oracle.com/javase/7/docs/api</link>
           </links>
diff --git a/tools/release.sh b/tools/release.sh
index 7adb375..d180bdf 100755
--- a/tools/release.sh
+++ b/tools/release.sh
@@ -47,6 +47,5 @@
 git tag -sf -m "$MSG" $1
 
 # run the build
-mvn clean install
+mvn clean install -T 1C
 mvn clean install -f org.eclipse.jgit.packaging/pom.xml
-