Class MergeResult

    • Constructor Detail

      • MergeResult

        public MergeResult​(ObjectId newHead,
                           ObjectId base,
                           ObjectId[] mergedCommits,
                           MergeResult.MergeStatus mergeStatus,
                           MergeStrategy mergeStrategy,
                           Map<String,​MergeResult<?>> lowLevelResults)
        Constructor for MergeResult.
        Parameters:
        newHead - the object the head points at after the merge
        base - the common base which was used to produce a content-merge. May be null if the merge-result was produced without computing a common base
        mergedCommits - all the commits which have been merged together
        mergeStatus - the status the merge resulted in
        mergeStrategy - the used MergeStrategy
        lowLevelResults - merge results as returned by ResolveMerger.getMergeResults()
        Since:
        2.0
      • MergeResult

        public MergeResult​(ObjectId newHead,
                           ObjectId base,
                           ObjectId[] mergedCommits,
                           MergeResult.MergeStatus mergeStatus,
                           MergeStrategy mergeStrategy,
                           Map<String,​MergeResult<?>> lowLevelResults,
                           String description)
        Constructor for MergeResult.
        Parameters:
        newHead - the object the head points at after the merge
        base - the common base which was used to produce a content-merge. May be null if the merge-result was produced without computing a common base
        mergedCommits - all the commits which have been merged together
        mergeStatus - the status the merge resulted in
        mergeStrategy - the used MergeStrategy
        lowLevelResults - merge results as returned by ResolveMerger.getMergeResults()
        description - a user friendly description of the merge result
      • MergeResult

        public MergeResult​(List<String> checkoutConflicts)
        Creates a new result that represents a checkout conflict before the operation even started for real.
        Parameters:
        checkoutConflicts - the conflicting files
    • Method Detail

      • getNewHead

        public ObjectId getNewHead()
        Get the object the head points at after the merge
        Returns:
        the object the head points at after the merge
      • getMergeStatus

        public MergeResult.MergeStatus getMergeStatus()
        Get the merge status
        Returns:
        the status the merge resulted in
      • getMergedCommits

        public ObjectId[] getMergedCommits()
        Get the commits which have been merged
        Returns:
        all the commits which have been merged together
      • getBase

        public ObjectId getBase()
        Get the common base
        Returns:
        base the common base which was used to produce a content-merge. May be null if the merge-result was produced without computing a common base
      • setConflicts

        public void setConflicts​(Map<String,​int[][]> conflicts)
        Set conflicts
        Parameters:
        conflicts - the conflicts to set
      • addConflict

        public void addConflict​(String path,
                                int[][] conflictingRanges)
        Add a conflict
        Parameters:
        path - path of the file to add a conflict for
        conflictingRanges - the conflicts to set
      • addConflict

        public void addConflict​(String path,
                                MergeResult<?> lowLevelResult)
        Add a conflict
        Parameters:
        path - path of the file to add a conflict for
        lowLevelResult - a MergeResult
      • getConflicts

        public Map<String,​int[][]> getConflicts()
        Returns information about the conflicts which occurred during a MergeCommand. The returned value maps the path of a conflicting file to a two-dimensional int-array of line-numbers telling where in the file conflict markers for which merged commit can be found.

        If the returned value contains a mapping "path"->[x][y]=z then this means

        • the file with path "path" contains conflicts
        • if y < "number of merged commits": for conflict number x in this file the chunk which was copied from commit number y starts on line number z. All numberings and line numbers start with 0.
        • if y == "number of merged commits": the first non-conflicting line after conflict number x starts at line number z

        Example code how to parse this data:

         MergeResult m=...;
         Map<String, int[][]> allConflicts = m.getConflicts();
         for (String path : allConflicts.keySet()) {
                int[][] c = allConflicts.get(path);
                System.out.println("Conflicts in file " + path);
                for (int i = 0; i < c.length; ++i) {
                        System.out.println("  Conflict #" + i);
                        for (int j = 0; j < (c[i].length) - 1; ++j) {
                                if (c[i][j] >= 0)
                                        System.out.println("    Chunk for "
                                                        + m.getMergedCommits()[j] + " starts on line #"
                                                        + c[i][j]);
                        }
                }
         }
         
        Returns:
        the conflicts or null if no conflict occurred
      • getCheckoutConflicts

        public List<String> getCheckoutConflicts()
        Returns a list of paths that cause a checkout conflict. These paths prevent the operation from even starting.
        Returns:
        the list of files that caused the checkout conflict.