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 10a4e22..c88b08d 100644
--- a/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
+++ b/org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
@@ -412,10 +412,6 @@
 lockOnNotHeld=Lock on {0} not held.
 lockStreamClosed=Output to lock on {0} already closed
 lockStreamMultiple=Output to lock on {0} already opened
-logInconsistentFiletimeDiff={}: inconsistent duration from file timestamps on {}, {}: {} > {}, but diff = {}. Aborting measurement at resolution {}.
-logLargerFiletimeDiff={}: inconsistent duration from file timestamps on {}, {}: diff = {} > {} (last good value). Aborting measurement.
-logSmallerFiletime={}: got smaller file timestamp on {}, {}: {} < {}. Aborting measurement at resolution {}.
-logXDGConfigHomeInvalid=Environment variable XDG_CONFIG_HOME contains an invalid path {}
 maxCountMustBeNonNegative=max count must be >= 0
 mergeConflictOnNonNoteEntries=Merge conflict on non-note entries: base = {0}, ours = {1}, theirs = {2}
 mergeConflictOnNotes=Merge conflict on note {0}. base = {1}, ours = {2}, theirs = {2}
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
index 748b1b0..ef0d477 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
@@ -440,10 +440,6 @@
 	/***/ public String lockOnNotHeld;
 	/***/ public String lockStreamClosed;
 	/***/ public String lockStreamMultiple;
-	/***/ public String logInconsistentFiletimeDiff;
-	/***/ public String logLargerFiletimeDiff;
-	/***/ public String logSmallerFiletime;
-	/***/ public String logXDGConfigHomeInvalid;
 	/***/ public String maxCountMustBeNonNegative;
 	/***/ public String mergeConflictOnNonNoteEntries;
 	/***/ public String mergeConflictOnNotes;
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java
index f57581a..78262e9 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/LockFile.java
@@ -218,14 +218,14 @@
 					int r;
 					while ((r = fis.read(buf)) >= 0) {
 						out.write(buf, 0, r);
+					}
 				}
-			}
-		} catch (FileNotFoundException fnfe) {
-			if (ref.exists()) {
-				throw fnfe;
-			}
-			// Don't worry about a file that doesn't exist yet, it
-			// conceptually has no current content to copy.
+			} catch (FileNotFoundException fnfe) {
+				if (ref.exists()) {
+					throw fnfe;
+				}
+				// Don't worry about a file that doesn't exist yet, it
+				// conceptually has no current content to copy.
 			}
 		} catch (IOException | RuntimeException | Error ioe) {
 			unlock();
@@ -322,17 +322,16 @@
 				if (out == null) {
 					os = getStream();
 					if (fsync) {
-			out = Channels.newOutputStream(os.getChannel());
+						out = Channels.newOutputStream(os.getChannel());
 					} else {
-			out = os;
+						out = os;
 					}
 				}
 				return out;
 			}
 
 			@Override
-			public void write(byte[] b, int o, int n)
-					throws IOException {
+			public void write(byte[] b, int o, int n) throws IOException {
 				get().write(b, o, n);
 			}
 
@@ -359,10 +358,10 @@
 					}
 					if (out != null) {
 						if (fsync) {
-						os.getChannel().force(true);
+							os.getChannel().force(true);
 						}
-					out.close();
-					os = null;
+						out.close();
+						os = null;
 					}
 					written = true;
 				} catch (IOException | RuntimeException | Error ioe) {
