Package com.google.gerrit.server.git
Class MergeUtil
java.lang.Object
com.google.gerrit.server.git.MergeUtil
Utility methods used during the merge process.
 
Note: Unless otherwise specified, the methods in this class do
 not flush ObjectInserters. Callers that want to read back objects before
 flushing should use ObjectInserter.newReader(). This is already the default behavior of
 BatchUpdate.
- 
Method SummaryModifier and TypeMethodDescriptionbooleancanCherryPick(MergeSorter mergeSorter, org.eclipse.jgit.lib.Repository repo, CodeReviewCommit mergeTip, CodeReviewCommit.CodeReviewRevWalk rw, CodeReviewCommit toMerge) booleancanFastForward(MergeSorter mergeSorter, CodeReviewCommit mergeTip, CodeReviewCommit.CodeReviewRevWalk rw, CodeReviewCommit toMerge) booleancanFastForwardOrMerge(MergeSorter mergeSorter, CodeReviewCommit mergeTip, CodeReviewCommit.CodeReviewRevWalk rw, org.eclipse.jgit.lib.Repository repo, CodeReviewCommit toMerge) booleancanMerge(MergeSorter mergeSorter, org.eclipse.jgit.lib.Repository repo, CodeReviewCommit mergeTip, CodeReviewCommit toMerge) createCherryPickFromCommit(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, org.eclipse.jgit.revwalk.RevCommit mergeTip, org.eclipse.jgit.revwalk.RevCommit originalCommit, org.eclipse.jgit.lib.PersonIdent cherryPickCommitterIdent, String commitMsg, CodeReviewCommit.CodeReviewRevWalk rw, int parentIndex, boolean ignoreIdenticalTree, boolean allowConflicts, boolean diff3Format, org.eclipse.jgit.attributes.AttributesNodeProvider attributesNodeProvider) createCommitMessageOnSubmit(CodeReviewCommit n, org.eclipse.jgit.revwalk.RevCommit mergeTip) createCommitMessageOnSubmit(org.eclipse.jgit.revwalk.RevCommit n, org.eclipse.jgit.revwalk.RevCommit mergeTip, ChangeNotes notes, PatchSet.Id id) Creates a commit message for a change, which can be customized by plugins.static StringcreateConflictMessage(List<String> conflicts) static CodeReviewCommitcreateMergeCommit(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, org.eclipse.jgit.revwalk.RevCommit mergeTip, org.eclipse.jgit.revwalk.RevCommit originalCommit, String mergeStrategy, boolean allowConflicts, org.eclipse.jgit.lib.PersonIdent authorIdent, org.eclipse.jgit.lib.PersonIdent committerIdent, String commitMsg, CodeReviewCommit.CodeReviewRevWalk rw, boolean diff3Format) static CodeReviewCommitfindAnyMergedInto(CodeReviewCommit.CodeReviewRevWalk rw, Iterable<CodeReviewCommit> commits, CodeReviewCommit tip) findUnmergedChanges(Set<Change.Id> expected, CodeReviewCommit.CodeReviewRevWalk rw, org.eclipse.jgit.revwalk.RevFlag canMergeFlag, CodeReviewCommit oldTip, CodeReviewCommit mergeTip, Iterable<Change.Id> alreadyMerged) getFirstFastForward(CodeReviewCommit mergeTip, org.eclipse.jgit.revwalk.RevWalk rw, List<CodeReviewCommit> toMerge) static org.eclipse.jgit.merge.ThreeWayMergeStrategygetMergeStrategy(org.eclipse.jgit.lib.Config cfg) booleanhasMissingDependencies(MergeSorter mergeSorter, CodeReviewCommit toMerge) voidmarkCleanMerges(org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.revwalk.RevFlag canMergeFlag, CodeReviewCommit mergeTip, Set<org.eclipse.jgit.revwalk.RevCommit> alreadyAccepted) mergeOneCommit(org.eclipse.jgit.lib.PersonIdent author, org.eclipse.jgit.lib.PersonIdent committer, CodeReviewCommit.CodeReviewRevWalk rw, org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, BranchNameKey destBranch, CodeReviewCommit mergeTip, CodeReviewCommit n, org.eclipse.jgit.attributes.AttributesNodeProvider attributesNodeProvider) static StringmergeStrategyName(boolean useContentMerge, boolean useRecursiveMerge) static org.eclipse.jgit.lib.ObjectIdmergeWithConflicts(org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.lib.ObjectInserter ins, org.eclipse.jgit.dircache.DirCache dc, String oursName, org.eclipse.jgit.revwalk.RevCommit ours, String theirsName, org.eclipse.jgit.revwalk.RevCommit theirs, Map<String, org.eclipse.jgit.merge.MergeResult<? extends org.eclipse.jgit.diff.Sequence>> mergeResults, boolean diff3Format) static org.eclipse.jgit.merge.MergernewMerger(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, String strategyName) org.eclipse.jgit.merge.ThreeWayMergernewThreeWayMerger(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, org.eclipse.jgit.attributes.AttributesNodeProvider attributesNodeProvider) static org.eclipse.jgit.merge.ThreeWayMergernewThreeWayMerger(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, org.eclipse.jgit.attributes.AttributesNodeProvider attributesNodeProvider, String strategyName, boolean useGitattributesForMerge) org.eclipse.jgit.merge.ThreeWayMergernewThreeWayMerger(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Repository repo) reduceToMinimalMerge(MergeSorter mergeSorter, Collection<CodeReviewCommit> toSort) static org.eclipse.jgit.revwalk.RevCommitresolveCommit(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevWalk rw, String str) static booleanuseGitattributesForMerge(org.eclipse.jgit.lib.Config cfg) static booleanuseRecursiveMerge(org.eclipse.jgit.lib.Config cfg) writeMergeCommit(org.eclipse.jgit.lib.PersonIdent author, org.eclipse.jgit.lib.PersonIdent committer, CodeReviewCommit.CodeReviewRevWalk rw, org.eclipse.jgit.lib.ObjectInserter inserter, BranchNameKey destBranch, CodeReviewCommit mergeTip, org.eclipse.jgit.lib.ObjectId treeId, CodeReviewCommit n) 
- 
Method Details- 
useRecursiveMergepublic static boolean useRecursiveMerge(org.eclipse.jgit.lib.Config cfg) 
- 
useGitattributesForMergepublic static boolean useGitattributesForMerge(org.eclipse.jgit.lib.Config cfg) 
- 
getMergeStrategypublic static org.eclipse.jgit.merge.ThreeWayMergeStrategy getMergeStrategy(org.eclipse.jgit.lib.Config cfg) 
- 
getFirstFastForwardpublic CodeReviewCommit getFirstFastForward(CodeReviewCommit mergeTip, org.eclipse.jgit.revwalk.RevWalk rw, List<CodeReviewCommit> toMerge) 
- 
reduceToMinimalMergepublic List<CodeReviewCommit> reduceToMinimalMerge(MergeSorter mergeSorter, Collection<CodeReviewCommit> toSort) 
- 
createCherryPickFromCommitpublic CodeReviewCommit createCherryPickFromCommit(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, org.eclipse.jgit.revwalk.RevCommit mergeTip, org.eclipse.jgit.revwalk.RevCommit originalCommit, org.eclipse.jgit.lib.PersonIdent cherryPickCommitterIdent, String commitMsg, CodeReviewCommit.CodeReviewRevWalk rw, int parentIndex, boolean ignoreIdenticalTree, boolean allowConflicts, boolean diff3Format, org.eclipse.jgit.attributes.AttributesNodeProvider attributesNodeProvider) throws IOException, MergeIdenticalTreeException, MergeConflictException, MethodNotAllowedException, com.google.gerrit.exceptions.InvalidMergeStrategyException - Throws:
- IOException
- MergeIdenticalTreeException
- MergeConflictException
- MethodNotAllowedException
- com.google.gerrit.exceptions.InvalidMergeStrategyException
 
- 
mergeWithConflictspublic static org.eclipse.jgit.lib.ObjectId mergeWithConflicts(org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.lib.ObjectInserter ins, org.eclipse.jgit.dircache.DirCache dc, String oursName, org.eclipse.jgit.revwalk.RevCommit ours, String theirsName, org.eclipse.jgit.revwalk.RevCommit theirs, Map<String, org.eclipse.jgit.merge.MergeResult<? extends org.eclipse.jgit.diff.Sequence>> mergeResults, boolean diff3Format) throws IOException- Throws:
- IOException
 
- 
createMergeCommitpublic static CodeReviewCommit createMergeCommit(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, org.eclipse.jgit.revwalk.RevCommit mergeTip, org.eclipse.jgit.revwalk.RevCommit originalCommit, String mergeStrategy, boolean allowConflicts, org.eclipse.jgit.lib.PersonIdent authorIdent, org.eclipse.jgit.lib.PersonIdent committerIdent, String commitMsg, CodeReviewCommit.CodeReviewRevWalk rw, boolean diff3Format) throws IOException, MergeIdenticalTreeException, MergeConflictException, com.google.gerrit.exceptions.InvalidMergeStrategyException - Throws:
- IOException
- MergeIdenticalTreeException
- MergeConflictException
- com.google.gerrit.exceptions.InvalidMergeStrategyException
 
- 
createConflictMessage
- 
createCommitMessageOnSubmitpublic String createCommitMessageOnSubmit(CodeReviewCommit n, org.eclipse.jgit.revwalk.RevCommit mergeTip) 
- 
createCommitMessageOnSubmitpublic String createCommitMessageOnSubmit(org.eclipse.jgit.revwalk.RevCommit n, org.eclipse.jgit.revwalk.RevCommit mergeTip, ChangeNotes notes, PatchSet.Id id) Creates a commit message for a change, which can be customized by plugins.By default, adds footers to existing commit message based on the state of the change. Plugins implementing ChangeMessageModifiercan modify the resulting commit message arbitrarily.- Returns:
- new message
 
- 
canMergepublic boolean canMerge(MergeSorter mergeSorter, org.eclipse.jgit.lib.Repository repo, CodeReviewCommit mergeTip, CodeReviewCommit toMerge) 
- 
canFastForwardpublic boolean canFastForward(MergeSorter mergeSorter, CodeReviewCommit mergeTip, CodeReviewCommit.CodeReviewRevWalk rw, CodeReviewCommit toMerge) 
- 
canFastForwardOrMergepublic boolean canFastForwardOrMerge(MergeSorter mergeSorter, CodeReviewCommit mergeTip, CodeReviewCommit.CodeReviewRevWalk rw, org.eclipse.jgit.lib.Repository repo, CodeReviewCommit toMerge) 
- 
canCherryPickpublic boolean canCherryPick(MergeSorter mergeSorter, org.eclipse.jgit.lib.Repository repo, CodeReviewCommit mergeTip, CodeReviewCommit.CodeReviewRevWalk rw, CodeReviewCommit toMerge) 
- 
hasMissingDependencies
- 
mergeOneCommitpublic CodeReviewCommit mergeOneCommit(org.eclipse.jgit.lib.PersonIdent author, org.eclipse.jgit.lib.PersonIdent committer, CodeReviewCommit.CodeReviewRevWalk rw, org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, BranchNameKey destBranch, CodeReviewCommit mergeTip, CodeReviewCommit n, org.eclipse.jgit.attributes.AttributesNodeProvider attributesNodeProvider) throws com.google.gerrit.exceptions.InvalidMergeStrategyException - Throws:
- com.google.gerrit.exceptions.InvalidMergeStrategyException
 
- 
writeMergeCommitpublic CodeReviewCommit writeMergeCommit(org.eclipse.jgit.lib.PersonIdent author, org.eclipse.jgit.lib.PersonIdent committer, CodeReviewCommit.CodeReviewRevWalk rw, org.eclipse.jgit.lib.ObjectInserter inserter, BranchNameKey destBranch, CodeReviewCommit mergeTip, org.eclipse.jgit.lib.ObjectId treeId, CodeReviewCommit n) throws IOException, org.eclipse.jgit.errors.MissingObjectException, org.eclipse.jgit.errors.IncorrectObjectTypeException - Throws:
- IOException
- org.eclipse.jgit.errors.MissingObjectException
- org.eclipse.jgit.errors.IncorrectObjectTypeException
 
- 
newThreeWayMergerpublic org.eclipse.jgit.merge.ThreeWayMerger newThreeWayMerger(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Repository repo) throws com.google.gerrit.exceptions.InvalidMergeStrategyException - Throws:
- com.google.gerrit.exceptions.InvalidMergeStrategyException
 
- 
newThreeWayMergerpublic org.eclipse.jgit.merge.ThreeWayMerger newThreeWayMerger(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, org.eclipse.jgit.attributes.AttributesNodeProvider attributesNodeProvider) throws com.google.gerrit.exceptions.InvalidMergeStrategyException - Throws:
- com.google.gerrit.exceptions.InvalidMergeStrategyException
 
- 
mergeStrategyName
- 
mergeStrategyName
- 
newThreeWayMergerpublic static org.eclipse.jgit.merge.ThreeWayMerger newThreeWayMerger(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, org.eclipse.jgit.attributes.AttributesNodeProvider attributesNodeProvider, String strategyName, boolean useGitattributesForMerge) throws com.google.gerrit.exceptions.InvalidMergeStrategyException - Throws:
- com.google.gerrit.exceptions.InvalidMergeStrategyException
 
- 
newMergerpublic static org.eclipse.jgit.merge.Merger newMerger(org.eclipse.jgit.lib.ObjectInserter inserter, org.eclipse.jgit.lib.Config repoConfig, String strategyName) throws com.google.gerrit.exceptions.InvalidMergeStrategyException - Throws:
- com.google.gerrit.exceptions.InvalidMergeStrategyException
 
- 
markCleanMergespublic void markCleanMerges(org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.revwalk.RevFlag canMergeFlag, CodeReviewCommit mergeTip, Set<org.eclipse.jgit.revwalk.RevCommit> alreadyAccepted) 
- 
findUnmergedChangespublic Set<Change.Id> findUnmergedChanges(Set<Change.Id> expected, CodeReviewCommit.CodeReviewRevWalk rw, org.eclipse.jgit.revwalk.RevFlag canMergeFlag, CodeReviewCommit oldTip, CodeReviewCommit mergeTip, Iterable<Change.Id> alreadyMerged) 
- 
findAnyMergedIntopublic static CodeReviewCommit findAnyMergedInto(CodeReviewCommit.CodeReviewRevWalk rw, Iterable<CodeReviewCommit> commits, CodeReviewCommit tip) throws IOException - Throws:
- IOException
 
- 
resolveCommitpublic static org.eclipse.jgit.revwalk.RevCommit resolveCommit(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevWalk rw, String str) throws BadRequestException, ResourceNotFoundException, IOException 
 
-