diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java index f8ad490c7..f77d72ae5 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java @@ -81,7 +81,6 @@ import org.eclipse.jgit.internal.JGitText; import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.FileMode; import org.eclipse.jgit.lib.ObjectId; -import org.eclipse.jgit.lib.ObjectReader; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevTree; import org.eclipse.jgit.treewalk.AbstractTreeIterator; @@ -309,29 +308,24 @@ public class ResolveMerger extends ThreeWayMerger { } private void checkout() throws NoWorkTreeException, IOException { - ObjectReader r = db.getObjectDatabase().newReader(); - try { - for (Map.Entry entry : toBeCheckedOut - .entrySet()) { - File f = new File(db.getWorkTree(), entry.getKey()); - createDir(f.getParentFile()); - DirCacheCheckout.checkoutEntry(db, f, entry.getValue(), r); - modifiedFiles.add(entry.getKey()); - } - // Iterate in reverse so that "folder/file" is deleted before - // "folder". Otherwise this could result in a failing path because - // of a non-empty directory, for which delete() would fail. - for (int i = toBeDeleted.size() - 1; i >= 0; i--) { - String fileName = toBeDeleted.get(i); - File f = new File(db.getWorkTree(), fileName); - if (!f.delete()) - if (!f.isDirectory()) - failingPaths.put(fileName, - MergeFailureReason.COULD_NOT_DELETE); - modifiedFiles.add(fileName); - } - } finally { - r.release(); + for (Map.Entry entry : toBeCheckedOut + .entrySet()) { + File f = new File(db.getWorkTree(), entry.getKey()); + createDir(f.getParentFile()); + DirCacheCheckout.checkoutEntry(db, f, entry.getValue(), reader); + modifiedFiles.add(entry.getKey()); + } + // Iterate in reverse so that "folder/file" is deleted before + // "folder". Otherwise this could result in a failing path because + // of a non-empty directory, for which delete() would fail. + for (int i = toBeDeleted.size() - 1; i >= 0; i--) { + String fileName = toBeDeleted.get(i); + File f = new File(db.getWorkTree(), fileName); + if (!f.delete()) + if (!f.isDirectory()) + failingPaths.put(fileName, + MergeFailureReason.COULD_NOT_DELETE); + modifiedFiles.add(fileName); } } @@ -368,7 +362,6 @@ public class ResolveMerger extends ThreeWayMerger { } DirCache dc = db.readDirCache(); - ObjectReader or = db.getObjectDatabase().newReader(); Iterator mpathsIt=modifiedFiles.iterator(); while(mpathsIt.hasNext()) { String mpath=mpathsIt.next(); @@ -378,7 +371,7 @@ public class ResolveMerger extends ThreeWayMerger { FileOutputStream fos = new FileOutputStream(new File( db.getWorkTree(), mpath)); try { - or.open(entry.getObjectId()).copyTo(fos); + reader.open(entry.getObjectId()).copyTo(fos); } finally { fos.close(); }