Browse Source

Blame: Suppress ReferenceEquality warning for RevCommit instances

Reference comparison of the RevCommit objects is OK; BlameGenerator uses
a single RevWalk which caches the RevCommits, so if a given commit is
cached the RevWalk will always return the same instance.

Factor the comparison out to a method, and suppress the warning with an
explanatory comment.

Change-Id: I5a148001dba7749ac15119aed388adb12b6f51ad
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
stable-5.4
David Pursehouse 5 years ago
parent
commit
215a2dcf0f
  1. 14
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java

14
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java

@ -218,7 +218,8 @@ class Blame extends TextBuiltin {
dateWidth = Math.max(dateWidth, date(line).length());
pathWidth = Math.max(pathWidth, path(line).length());
}
while (line + 1 < end && blame.getSourceCommit(line + 1) == c) {
while (line + 1 < end
&& sameCommit(blame.getSourceCommit(line + 1), c)) {
line++;
}
maxSourceLine = Math.max(maxSourceLine, blame.getSourceLine(line));
@ -257,13 +258,22 @@ class Blame extends TextBuiltin {
blame.getResultContents().writeLine(outs, line);
outs.flush();
outw.print('\n');
} while (++line < end && blame.getSourceCommit(line) == c);
} while (++line < end
&& sameCommit(blame.getSourceCommit(line), c));
}
} catch (NoWorkTreeException | IOException e) {
throw die(e.getMessage(), e);
}
}
@SuppressWarnings("ReferenceEquality")
private static boolean sameCommit(RevCommit a, RevCommit b) {
// Reference comparison is intentional; BlameGenerator uses a single
// RevWalk which caches the RevCommit objects, and if a given commit
// is cached the RevWalk returns the same instance.
return a == b;
}
private int uniqueAbbrevLen(ObjectReader reader, RevCommit commit)
throws IOException {
return reader.abbreviate(commit, abbrev).length();

Loading…
Cancel
Save