Class ResolveMerger

  extended by org.eclipse.jgit.merge.Merger
      extended by org.eclipse.jgit.merge.ThreeWayMerger
          extended by org.eclipse.jgit.merge.ResolveMerger

public class ResolveMerger
extends ThreeWayMerger

A three-way merger performing a content-merge if necessary

Nested Class Summary
static class ResolveMerger.MergeFailureReason
          If the merge fails (means: not stopped because of unresolved conflicts) this enum is used to explain why it failed
Field Summary
Fields inherited from class org.eclipse.jgit.merge.Merger
db, reader, sourceCommits, sourceObjects, sourceTrees, walk
Constructor Summary
protected ResolveMerger(Repository local)
protected ResolveMerger(Repository local, boolean inCore)
Method Summary
 boolean failed()
          Returns whether this merge failed (i.e.
 String[] getCommitNames()
 Map<String,ResolveMerger.MergeFailureReason> getFailingPaths()
 Map<String,MergeResult<? extends Sequence>> getMergeResults()
 List<String> getModifiedFiles()
 ObjectId getResultTreeId()
 Map<String,DirCacheEntry> getToBeCheckedOut()
 List<String> getUnmergedPaths()
protected  boolean mergeImpl()
          Execute the merge.
 void setCommitNames(String[] commitNames)
 void setDirCache(DirCache dc)
          Sets the DirCache which shall be used by this merger.
 void setWorkingTreeIterator(WorkingTreeIterator workingTreeIterator)
          Sets the WorkingTreeIterator to be used by this merger.
Methods inherited from class org.eclipse.jgit.merge.ThreeWayMerger
merge, mergeBase, setBase
Methods inherited from class org.eclipse.jgit.merge.Merger
getBaseCommit, getObjectInserter, getRepository, mergeBase, openTree, setObjectInserter
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


protected ResolveMerger(Repository local,
                        boolean inCore)
local -
inCore -


protected ResolveMerger(Repository local)
local -
Method Detail


protected boolean mergeImpl()
                     throws IOException
Description copied from class: Merger
Execute the merge.

This method is called from Merger.merge(AnyObjectId[]) after the Merger.sourceObjects, Merger.sourceCommits and Merger.sourceTrees have been populated.

Specified by:
mergeImpl in class Merger
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.
IncorrectObjectTypeException - one of the input objects is not a commit, but the strategy requires it to be a commit.
IOException - one or more sources could not be read, or outputs could not be written to the Repository.


public ObjectId getResultTreeId()
Specified by:
getResultTreeId in class Merger
resulting tree, if Merger.merge(AnyObjectId[]) returned true.


public void setCommitNames(String[] commitNames)
commitNames - the names of the commits as they would appear in conflict markers


public String[] getCommitNames()
the names of the commits as they would appear in conflict markers.


public List<String> getUnmergedPaths()
the paths with conflicts. This is a subset of the files listed by getModifiedFiles()


public List<String> getModifiedFiles()
the paths of files which have been modified by this merge. A file will be modified if a content-merge works on this path or if the merge algorithm decides to take the theirs-version. This is a superset of the files listed by getUnmergedPaths().


public Map<String,DirCacheEntry> getToBeCheckedOut()
a map which maps the paths of files which have to be checked out because the merge created new fully-merged content for this file into the index. This means: the merge wrote a new stage 0 entry for this path.


public Map<String,MergeResult<? extends Sequence>> getMergeResults()
the mergeResults


public Map<String,ResolveMerger.MergeFailureReason> getFailingPaths()
lists paths causing this merge to fail (not stopped because of a conflict). null is returned if this merge didn't fail.


public boolean failed()
Returns whether this merge failed (i.e. not stopped because of a conflict)

true if a failure occurred, false otherwise


public void setDirCache(DirCache dc)
Sets the DirCache which shall be used by this merger. If the DirCache is not set explicitly this merger will implicitly get and lock a default DirCache. If the DirCache is explicitly set the caller is responsible to lock it in advance. Finally the merger will call DirCache.commit() which requires that the DirCache is locked. If the mergeImpl() returns without throwing an exception the lock will be released. In case of exceptions the caller is responsible to release the lock.

dc - the DirCache to set


public void setWorkingTreeIterator(WorkingTreeIterator workingTreeIterator)
Sets the WorkingTreeIterator to be used by this merger. If no WorkingTreeIterator is set this merger will ignore the working tree and fail if a content merge is necessary.

TODO: enhance WorkingTreeIterator to support write operations. Then this merger will be able to merge with a different working tree abstraction.

workingTreeIterator - the workingTreeIt to set

Copyright © 2013. All Rights Reserved.