Package com.google.gerrit.server.patch
Class DiffUtil
java.lang.Object
com.google.gerrit.server.patch.DiffUtil
A utility class used by the diff cache interfaces
GitModifiedFilesCache and ModifiedFilesCache.-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanareRelated(org.eclipse.jgit.revwalk.RevCommit commitA, org.eclipse.jgit.revwalk.RevCommit commitB) Returns true if the commitA and commitB parameters are parent/child, if they have a common parent, or if any of them is a root or merge commit.static voidgetFormattedDiff(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.lib.ObjectReader reader, org.eclipse.jgit.revwalk.RevTree baseTree, org.eclipse.jgit.revwalk.RevTree childTree, String path, OutputStream out) static voidgetFormattedDiff(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevCommit baseCommit, org.eclipse.jgit.revwalk.RevCommit childCommit, String path, OutputStream out) Get formatted diff between the given commits, either for a single path if specified, or for the full trees.getPatchHeader(String patch) static org.eclipse.jgit.revwalk.RevCommitgetRevCommit(org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.lib.ObjectId commitId) Returns the RevCommit object given the 20 bytes commitId SHA-1 hash.static org.eclipse.jgit.lib.ObjectIdgetTreeId(org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.lib.ObjectId commitId) Returns the Git tree object ID pointed to by the commitId parameter.static com.google.common.collect.ImmutableList<ModifiedFile> mergeRewrittenModifiedFiles(List<ModifiedFile> modifiedFiles) Return themodifiedFilesinput list while merging rewritten entries.static Stringstatic Stringstatic StringremovePatchHeader(String patch) static intstringSize(String str)
-
Constructor Details
-
DiffUtil
public DiffUtil()
-
-
Method Details
-
mergeRewrittenModifiedFiles
public static com.google.common.collect.ImmutableList<ModifiedFile> mergeRewrittenModifiedFiles(List<ModifiedFile> modifiedFiles) Return themodifiedFilesinput list while merging rewritten entries.Background: In some cases, JGit returns two diff entries (ADDED/DELETED, RENAMED/DELETED, etc...) for the same file path. This happens e.g. when a file's mode is changed between patchsets, for example converting a symlink file to a regular file. We identify this case and return a single modified file with changeType =
Patch.ChangeType.REWRITE. -
getTreeId
public static org.eclipse.jgit.lib.ObjectId getTreeId(org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.lib.ObjectId commitId) throws IOException Returns the Git tree object ID pointed to by the commitId parameter.- Parameters:
rw- aRevWalkof an opened repository that is used to walk the commit graph.commitId- 20 bytes commitId SHA-1 hash.- Returns:
- Git tree object ID pointed to by the commitId.
- Throws:
IOException
-
getRevCommit
public static org.eclipse.jgit.revwalk.RevCommit getRevCommit(org.eclipse.jgit.revwalk.RevWalk rw, org.eclipse.jgit.lib.ObjectId commitId) throws IOException Returns the RevCommit object given the 20 bytes commitId SHA-1 hash.- Parameters:
rw- aRevWalkof an opened repository that is used to walk the commit graph.commitId- 20 bytes commitId SHA-1 hash- Returns:
- The RevCommit representing the commit in Git
- Throws:
IOException- a pack file or loose object could not be read while parsing the commits.
-
areRelated
public static boolean areRelated(org.eclipse.jgit.revwalk.RevCommit commitA, org.eclipse.jgit.revwalk.RevCommit commitB) Returns true if the commitA and commitB parameters are parent/child, if they have a common parent, or if any of them is a root or merge commit. -
stringSize
-
getFormattedDiff
public static void getFormattedDiff(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.revwalk.RevCommit baseCommit, org.eclipse.jgit.revwalk.RevCommit childCommit, String path, OutputStream out) throws IOException Get formatted diff between the given commits, either for a single path if specified, or for the full trees.- Parameters:
repo- to get the diff frombaseCommit- to compare withchildCommit- to comparepath- to narrow the diff toout- to append the diff to- Throws:
IOException- if the diff couldn't be written
-
getFormattedDiff
public static void getFormattedDiff(org.eclipse.jgit.lib.Repository repo, org.eclipse.jgit.lib.ObjectReader reader, org.eclipse.jgit.revwalk.RevTree baseTree, org.eclipse.jgit.revwalk.RevTree childTree, String path, OutputStream out) throws IOException - Throws:
IOException
-
normalizePatchForComparison
-
removePatchHeader
-
getPatchHeader
-
normalizePatchForComparison
- Throws:
IOException
-