Package org.eclipse.jgit.merge
Class ThreeWayMerger
- java.lang.Object
-
- org.eclipse.jgit.merge.Merger
-
- org.eclipse.jgit.merge.ThreeWayMerger
-
- Direct Known Subclasses:
ResolveMerger
public abstract class ThreeWayMerger extends Merger
A merge of 2 trees, using a common base ancestor tree.
-
-
Field Summary
-
Fields inherited from class org.eclipse.jgit.merge.Merger
db, reader, sourceCommits, sourceObjects, sourceTrees, walk
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
ThreeWayMerger(Repository local)
Create a new merge instance for a repository.protected
ThreeWayMerger(Repository local, boolean inCore)
Create a new merge instance for a repository.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ObjectId
getBaseCommitId()
boolean
merge(AnyObjectId... tips)
Merge together two or more tree-ish objects.protected AbstractTreeIterator
mergeBase()
Create an iterator to walk the merge base.void
setBase(AnyObjectId id)
Set the common ancestor tree.-
Methods inherited from class org.eclipse.jgit.merge.Merger
getBaseCommit, getBaseCommit, getObjectInserter, getRepository, getResultTreeId, merge, mergeImpl, openTree, setObjectInserter
-
-
-
-
Constructor Detail
-
ThreeWayMerger
protected ThreeWayMerger(Repository local)
Create a new merge instance for a repository.- Parameters:
local
- the repository this merger will read and write data on.
-
ThreeWayMerger
protected ThreeWayMerger(Repository local, boolean inCore)
Create a new merge instance for a repository.- Parameters:
local
- the repository this merger will read and write data on.inCore
- perform the merge in core with no working folder involved
-
-
Method Detail
-
setBase
public void setBase(AnyObjectId id) throws MissingObjectException, IncorrectObjectTypeException, java.io.IOException
Set the common ancestor tree.- Parameters:
id
- common base treeish; null to automatically compute the common base from the input commits duringmerge(AnyObjectId...)
.- Throws:
IncorrectObjectTypeException
- the object is not a treeish.MissingObjectException
- the object does not exist.java.io.IOException
- the object could not be read.
-
merge
public boolean merge(AnyObjectId... tips) throws java.io.IOException
Description copied from class:Merger
Merge together two or more tree-ish objects.Any tree-ish may be supplied as inputs. Commits and/or tags pointing at trees or commits may be passed as input objects.
- Overrides:
merge
in classMerger
- Parameters:
tips
- source trees to be combined together. The merge base is not included in this set.- Returns:
- true if the merge was completed without conflicts; false if the merge strategy cannot handle this merge or there were conflicts preventing it from automatically resolving all paths.
- Throws:
IncorrectObjectTypeException
- one of the input objects is not a commit, but the strategy requires it to be a commit.java.io.IOException
- one or more sources could not be read, or outputs could not be written to the Repository.
-
getBaseCommitId
public ObjectId getBaseCommitId()
- Specified by:
getBaseCommitId
in classMerger
- Returns:
- the ID of the commit that was used as merge base for merging, or null if no merge base was used or it was set manually
-
mergeBase
protected AbstractTreeIterator mergeBase() throws java.io.IOException
Create an iterator to walk the merge base.- Returns:
- an iterator over the caller-specified merge base, or the natural merge base of the two input commits.
- Throws:
java.io.IOException
-
-