Fix adding files in a network share

We cannot always rename read-only files on network shares,
so rename the temp file for a new loose object first, and
then set it as read-only.

Bug: 335388
Change-Id: Ie0350e032a97e0d09626d6143c5c692873a5f6a2
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
Signed-off-by: Chris Aniszczyk <caniszczyk@gmail.com>
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java
index afad321..ac48d2a 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/ObjectDirectory.java
@@ -472,8 +472,6 @@ InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId id,
 			return InsertLooseObjectResult.EXISTS_PACKED;
 		}
 
-		tmp.setReadOnly();
-
 		final File dst = fileFor(id);
 		if (dst.exists()) {
 			// We want to be extra careful and avoid replacing an object
@@ -484,6 +482,7 @@ InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId id,
 			return InsertLooseObjectResult.EXISTS_LOOSE;
 		}
 		if (tmp.renameTo(dst)) {
+			tmp.setReadOnly();
 			unpackedObjectCache.add(id);
 			return InsertLooseObjectResult.INSERTED;
 		}