diff options
author | Thomas Wolf <thomas.wolf@paranor.ch> | 2019-08-06 18:32:35 +0200 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2019-11-27 03:03:06 +0100 |
commit | 533a81db9d5d6d58e03c54c22e4b7b15d4125095 (patch) | |
tree | 5f5eb5b3c5404e619ca203f03a42ec81b0aca705 /org.eclipse.jgit.pgm/src/org | |
parent | 59f9d206c954b5633f5978723bd0a2e7db31c2e8 (diff) | |
download | jgit-533a81db9d5d6d58e03c54c22e4b7b15d4125095.tar.gz jgit-533a81db9d5d6d58e03c54c22e4b7b15d4125095.zip |
JGit pgm: Format blame output to match canonical git
Canonical git shows the zero-Id for lines without commit, and
uses the current time stamp for such lines.
Also consider lines without commit when calculating the field
widths.
Change-Id: If0bee9b3e7f90861ad0f387f68e52ecc4a53dfd7
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
Diffstat (limited to 'org.eclipse.jgit.pgm/src/org')
-rw-r--r-- | org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java | 64 |
1 files changed, 41 insertions, 23 deletions
diff --git a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java index f85d8d49a2..1a4c111bcb 100644 --- a/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java +++ b/org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Blame.java @@ -133,6 +133,9 @@ class Blame extends TextBuiltin { private BlameResult blame; + /** Used to get a current time stamp for lines without commit. */ + private final PersonIdent dummyDate = new PersonIdent("", ""); //$NON-NLS-1$ //$NON-NLS-2$ + /** {@inheritDoc} */ @Override protected void run() { @@ -214,6 +217,10 @@ class Blame extends TextBuiltin { authorWidth = Math.max(authorWidth, author(line).length()); dateWidth = Math.max(dateWidth, date(line).length()); pathWidth = Math.max(pathWidth, path(line).length()); + } else if (c == null) { + authorWidth = Math.max(authorWidth, author(line).length()); + dateWidth = Math.max(dateWidth, date(line).length()); + pathWidth = Math.max(pathWidth, path(line).length()); } while (line + 1 < end && sameCommit(blame.getSourceCommit(line + 1), c)) { @@ -351,10 +358,12 @@ class Blame extends TextBuiltin { } private String date(int line) { - if (blame.getSourceCommit(line) == null) - return ""; //$NON-NLS-1$ - - PersonIdent author = blame.getSourceAuthor(line); + PersonIdent author; + if (blame.getSourceCommit(line) == null) { + author = dummyDate; + } else { + author = blame.getSourceAuthor(line); + } if (author == null) return ""; //$NON-NLS-1$ @@ -372,28 +381,37 @@ class Blame extends TextBuiltin { if (r != null) return r; - if (showBlankBoundary && commit.getParentCount() == 0) - commit = null; - if (commit == null) { - int len = showLongRevision ? OBJECT_ID_STRING_LENGTH : (abbrev + 1); - StringBuilder b = new StringBuilder(len); - for (int i = 0; i < len; i++) - b.append(' '); - r = b.toString(); - - } else if (!root && commit.getParentCount() == 0) { - if (showLongRevision) - r = "^" + commit.name().substring(0, OBJECT_ID_STRING_LENGTH - 1); //$NON-NLS-1$ - else - r = "^" + reader.abbreviate(commit, abbrev).name(); //$NON-NLS-1$ + if (showLongRevision) { + r = ObjectId.zeroId().name(); + } else { + r = ObjectId.zeroId().abbreviate(abbrev + 1).name(); + } } else { - if (showLongRevision) - r = commit.name(); - else - r = reader.abbreviate(commit, abbrev + 1).name(); + if (showBlankBoundary && commit.getParentCount() == 0) + commit = null; + + if (commit == null) { + int len = showLongRevision ? OBJECT_ID_STRING_LENGTH + : (abbrev + 1); + StringBuilder b = new StringBuilder(len); + for (int i = 0; i < len; i++) + b.append(' '); + r = b.toString(); + + } else if (!root && commit.getParentCount() == 0) { + if (showLongRevision) + r = "^" + commit.name().substring(0, //$NON-NLS-1$ + OBJECT_ID_STRING_LENGTH - 1); + else + r = "^" + reader.abbreviate(commit, abbrev).name(); //$NON-NLS-1$ + } else { + if (showLongRevision) + r = commit.name(); + else + r = reader.abbreviate(commit, abbrev + 1).name(); + } } - abbreviatedCommits.put(commit, r); return r; } |