From: Dave Borowitz Date: Wed, 1 May 2013 22:47:23 +0000 (-0700) Subject: Reuse Merger's ObjectReader from ResolveMerger X-Git-Tag: v3.5.0.201409071800-rc1~41 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e06082c171b72b3b4a9792c839143ac1310ea043;p=jgit.git Reuse Merger's ObjectReader from ResolveMerger The base Merger class already has a single ObjectReader instance that it handles releasing as necessary, so creating new readers is not necessary. Change-Id: I990ec43af7df448c7825fc1b10e62eadaa3e0c2a --- 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 f8ad490c78..f77d72ae54 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(); }