Class ThreeWayMerger

  • Direct Known Subclasses:
    ResolveMerger

    public abstract class ThreeWayMerger
    extends Merger
    A merge of 2 trees, using a common base ancestor tree.
    • 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
      • ThreeWayMerger

        protected ThreeWayMerger​(ObjectInserter inserter)
        Create a new in-core merge instance from an inserter.
        Parameters:
        inserter - the inserter to write objects to.
        Since:
        4.8
    • Method Detail

      • merge

        public boolean merge​(AnyObjectId... tips)
                      throws IOException
        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 class Merger
        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.
        IOException - one or more sources could not be read, or outputs could not be written to the Repository.
      • getBaseCommitId

        public ObjectId getBaseCommitId()
        Get the ID of the commit that was used as merge base for merging
        Specified by:
        getBaseCommitId in class Merger
        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 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:
        IOException