--- .../src/org/spearce/egit/ui/GitHistoryPage.java | 57 +++++++++++++++++--- 1 files changed, 49 insertions(+), 8 deletions(-) diff --git a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java index 649df3f..cc11b97 100644 --- a/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java +++ b/org.spearce.egit.ui/src/org/spearce/egit/ui/GitHistoryPage.java @@ -88,7 +88,9 @@ import org.spearce.egit.core.internal.mapping.GitFileHistoryProvider; import org.spearce.egit.core.internal.mapping.GitFileRevision; import org.spearce.egit.core.project.RepositoryMapping; import org.spearce.egit.ui.internal.actions.GitCompareRevisionAction; +import org.spearce.jgit.lib.Commit; import org.spearce.jgit.lib.ObjectId; +import org.spearce.jgit.lib.PersonIdent; import org.spearce.jgit.lib.Tag; import org.spearce.jgit.lib.TopologicalSorter; import org.spearce.jgit.lib.Repository.StGitPatch; @@ -221,14 +223,16 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable, if(selection2.length == 1) { // if the table item is not visible in the UI and it's selected via keyboard // this listener is called before the listener that sets the item data. - if(selection2[0] == null) { + GitCommitFileRevision revision = (GitCommitFileRevision) selection2[0]; + if(revision == null) { int ix = table.getSelectionIndex(); - GitFileRevision revision = (GitFileRevision) fileRevisions.get(ix); + revision = (GitCommitFileRevision) fileRevisions.get(ix); selection2[0] = revision; } - setRevisionInfoTextViewers(selection2[0]); + setRevisionInfoTextViewers(revision); } + compareAction.setCurrentFileRevision(fileRevisions.get(0)); compareAction.selectionChanged(new StructuredSelection( selection2)); @@ -554,7 +558,7 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable, revCommentTextViewer = new TextViewer(composite, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY); } - /* private */void setRevisionInfoTextViewers(IFileRevision rev) { + /* private */void setRevisionInfoTextViewers(GitCommitFileRevision rev) { StringBuilder revisionInfo = new StringBuilder(); if (appliedPatches != null) { String id = rev.getContentIdentifier(); @@ -570,7 +574,7 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable, } } if (revisionInfo.length() == 0) { - revisionInfo.append("Commit: "); + revisionInfo.append("Commit ID: "); revisionInfo.append(rev.getContentIdentifier()); } @@ -673,10 +677,30 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable, e.printStackTrace(); } + Commit commit = rev.getCommit(); revisionInfo.append("\nAuthor: "); - revisionInfo.append(rev.getAuthor()); - revisionInfo.append("\nDate: "); - revisionInfo.append(DATETIMETZ_FORMAT.format(new Date(rev.getTimestamp()))); + revisionInfo.append(formatPersonIdentForRevInfo(commit.getAuthor())); + revisionInfo.append("\nCommiter: "); + revisionInfo.append(formatPersonIdentForRevInfo(commit.getCommitter())); + if(commit.getParentIds() != null) { + for(ObjectId pid : commit.getParentIds()) { + revisionInfo.append("\nParent: "); + revisionInfo.append(pid.toString()); + try { + Commit pc = repositoryMapping.getRepository().mapCommit(pid); + revisionInfo.append(" ("); + String cmesg = pc.getMessage(); + int enterIndex = cmesg.indexOf("\n"); + if(enterIndex > 0) { + cmesg = cmesg.substring(0, enterIndex); + } + revisionInfo.append(cmesg); + revisionInfo.append(" )"); + } catch (IOException e) { + e.printStackTrace(); + } + } + } String comment = rev.getComment(); revDetailTextViewer.setDocument(new Document(revisionInfo.toString())); @@ -691,6 +715,23 @@ public class GitHistoryPage extends HistoryPage implements IAdaptable, if (workbenchPageSite != null) { workbenchPageSite.getActionBars().getStatusLineManager().setMessage(comment); } + + } + + private String formatPersonIdentForRevInfo(PersonIdent p) { + StringBuilder sb = new StringBuilder(); + sb.append(p.getName()); + if(p.getEmailAddress() != null) { + sb.append(" <"); + sb.append(p.getEmailAddress()); + sb.append(">"); + } + if(p.getWhen() != null) { + sb.append(" "); + sb.append(DATETIMETZ_FORMAT.format(p.getWhen())); + } + + return sb.toString(); } /* private */void cleanRevisionInfoTextViewers() { -- 1.5.3.7 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html