]> source.dussan.org Git - jgit.git/commitdiff
Reuse Merger's ObjectReader from ResolveMerger 01/12501/7
authorDave Borowitz <dborowitz@google.com>
Wed, 1 May 2013 22:47:23 +0000 (15:47 -0700)
committerShawn Pearce <spearce@spearce.org>
Mon, 11 Aug 2014 21:46:31 +0000 (14:46 -0700)
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

org.eclipse.jgit/src/org/eclipse/jgit/merge/ResolveMerger.java

index f8ad490c7825b2853225b5eba1b5383119dab2de..f77d72ae5450645c21c617d343fdbe1de9c992a4 100644 (file)
@@ -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<String, DirCacheEntry> 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<String, DirCacheEntry> 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<String> 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();
                        }