Allow applications to pass ObjectInserter to Merger

Gerrit Code Review needs to control which inserter is used by a
Merger. Allow the application to set the inserter before calling
merge, giving callers more direct control over how objects will
be created.

Change-Id: I3c527a493db4659e95289ff3077cffb9e32336cf
This commit is contained in:
Shawn O. Pearce 2012-06-14 12:42:39 -07:00
parent 9000351909
commit d0e4943df1
1 changed files with 19 additions and 0 deletions

View File

@ -108,6 +108,8 @@ public Repository getRepository() {
/**
* @return an object writer to create objects in {@link #getRepository()}.
* If no inserter has been set on this instance, one will be created
* and returned by all future calls.
*/
public ObjectInserter getObjectInserter() {
if (inserter == null)
@ -115,6 +117,23 @@ public ObjectInserter getObjectInserter() {
return inserter;
}
/**
* Set the inserter this merger will use to create objects.
* <p>
* If an inserter was already set on this instance (such as by a prior set,
* or a prior call to {@link #getObjectInserter()}), the prior inserter will
* be released first.
*
* @param oi
* the inserter instance to use. Must be associated with the
* repository instance returned by {@link #getRepository()}.
*/
public void setObjectInserter(ObjectInserter oi) {
if (inserter != null)
inserter.release();
inserter = oi;
}
/**
* Merge together two or more tree-ish objects.
* <p>