Package org.eclipse.jgit.merge
Class MergeResult<S extends Sequence>
- java.lang.Object
-
- org.eclipse.jgit.merge.MergeResult<S>
-
- Type Parameters:
S
- type of sequence.
- All Implemented Interfaces:
Iterable<MergeChunk>
public class MergeResult<S extends Sequence> extends Object implements Iterable<MergeChunk>
The result of merging a number ofSequence
objects. These sequences have one common predecessor sequence. The result of a merge is a list of MergeChunks. Each MergeChunk contains either a range (a subsequence) from one of the merged sequences, a range from the common predecessor or a conflicting range from one of the merged sequences. A conflict will be reported as multiple chunks, one for each conflicting range. The first chunk for a conflict is marked specially to distinguish the border between two consecutive conflicts.This class does not know anything about how to present the merge result to the end-user. MergeFormatters have to be used to construct something human readable.
-
-
Constructor Summary
Constructors Constructor Description MergeResult(List<S> sequences)
Creates a new empty MergeResult
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(int srcIdx, int begin, int end, MergeChunk.ConflictState conflictState)
Adds a new range from one of the merged sequences or from the common predecessor.boolean
containsConflicts()
Whether this merge result contains conflictsList<S>
getSequences()
Returns the common predecessor sequence and the merged sequence in one list.Iterator<MergeChunk>
iterator()
protected void
setContainsConflicts(boolean containsConflicts)
Sets explicitly whether this merge should be seen as containing a conflict or not.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
MergeResult
public MergeResult(List<S> sequences)
Creates a new empty MergeResult- Parameters:
sequences
- contains the common predecessor sequence at position 0 followed by the merged sequences. This list should not be modified anymore during the lifetime of thisMergeResult
.
-
-
Method Detail
-
add
public void add(int srcIdx, int begin, int end, MergeChunk.ConflictState conflictState)
Adds a new range from one of the merged sequences or from the common predecessor. This method can add conflicting and non-conflicting ranges controlled by the conflictState parameter- Parameters:
srcIdx
- determines from which sequence this range comes. An index of x specifies the x+1 element in the list of sequences specified to the constructorbegin
- the first element from the specified sequence which should be included in the merge result. Indexes start with 0.end
- specifies the end of the range to be added. The element this index points to is the first element which not added to the merge result. All elements between begin (including begin) and this element are added.conflictState
- when set to NO_CONLICT a non-conflicting range is added. This will end implicitly all open conflicts added before.
-
getSequences
public List<S> getSequences()
Returns the common predecessor sequence and the merged sequence in one list. The common predecessor is the first element in the list- Returns:
- the common predecessor at position 0 followed by the merged sequences.
-
iterator
public Iterator<MergeChunk> iterator()
-
containsConflicts
public boolean containsConflicts()
Whether this merge result contains conflicts- Returns:
- true if this merge result contains conflicts
-
setContainsConflicts
protected void setContainsConflicts(boolean containsConflicts)
Sets explicitly whether this merge should be seen as containing a conflict or not. Needed because during RecursiveMerger we want to do content-merges and take the resulting content (even with conflict markers!) as new conflict-free content- Parameters:
containsConflicts
- whether this merge should be seen as containing a conflict or not.- Since:
- 3.5
-
-