Defer object flushing when merging
Mergers in the most recent JGit know how to read previously-inserted objects back, so a series of merges does not require aggressively flushing the objects. Instead, flush objects in MergeOp just before updating the relevant refs. Change-Id: Ia85c5114e86739b4a480bea65f3413fe47cf572d
This commit is contained in:
@@ -430,13 +430,11 @@ public class MergeOp {
|
||||
String m = "Error opening repository \"" + name.get() + '"';
|
||||
throw new MergeException(m, err);
|
||||
}
|
||||
|
||||
rw = CodeReviewCommit.newRevWalk(repo);
|
||||
inserter = repo.newObjectInserter();
|
||||
rw = CodeReviewCommit.newRevWalk(inserter.newReader());
|
||||
rw.sort(RevSort.TOPO);
|
||||
rw.sort(RevSort.COMMIT_TIME_DESC, true);
|
||||
canMergeFlag = rw.newFlag("CAN_MERGE");
|
||||
|
||||
inserter = repo.newObjectInserter();
|
||||
}
|
||||
|
||||
private RefUpdate openBranch()
|
||||
@@ -674,6 +672,11 @@ public class MergeOp {
|
||||
+ destProject.getProject().getName(), e);
|
||||
}
|
||||
}
|
||||
try {
|
||||
inserter.flush();
|
||||
} catch (IOException e) {
|
||||
throw new MergeException("Cannot flush merge results", e);
|
||||
}
|
||||
|
||||
branchUpdate.setRefLogIdent(refLogIdent);
|
||||
branchUpdate.setForceUpdate(false);
|
||||
|
Reference in New Issue
Block a user