diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/CommitNode.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/CommitNode.java index 5cf924d4398e..477af08a84f0 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/CommitNode.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/CommitNode.java @@ -22,6 +22,7 @@ import com.intellij.openapi.vcs.changes.issueLinks.IssueLinkRenderer; import com.intellij.ui.ColoredTreeCellRenderer; import com.intellij.ui.SimpleTextAttributes; import com.intellij.vcs.log.VcsFullCommitDetails; +import com.intellij.vcs.log.util.VcsUserUtil; import org.jetbrains.annotations.NotNull; import javax.swing.tree.DefaultMutableTreeNode; @@ -53,7 +54,7 @@ public class CommitNode extends DefaultMutableTreeNode implements CustomRendered public String getTooltip() { String hash = DvcsUtil.getShortHash(getUserObject().getId().toString()); String date = DvcsUtil.getDateString(getUserObject()); - String author = getUserObject().getAuthor().getName(); + String author = VcsUserUtil.getShortPresentation(getUserObject().getAuthor()); String message = IssueLinkHtmlRenderer.formatTextWithLinks(myProject, getUserObject().getFullMessage()); return String.format("%s %s by %s\n\n%s", hash, date, author, message); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MyCommitsHighlighter.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MyCommitsHighlighter.java index 5b291e785bc2..e2ba5cfed5c2 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MyCommitsHighlighter.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/MyCommitsHighlighter.java @@ -61,7 +61,7 @@ public class MyCommitsHighlighter implements VcsLogHighlighter { @NotNull @Override public String fun(VcsUser user) { - return VcsUserUtil.getNameInStandardForm(user.getName()); + return VcsUserUtil.getNameInStandardForm(VcsUserUtil.getShortPresentation(user)); } }; Set allUserNames = ContainerUtil.newHashSet(ContainerUtil.map(myDataManager.getAllUsers(), nameToString)); diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/filter/UserFilterPopupComponent.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/filter/UserFilterPopupComponent.java index 8d7966f0bf58..38f20c3936b5 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/filter/UserFilterPopupComponent.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/filter/UserFilterPopupComponent.java @@ -23,6 +23,7 @@ import com.intellij.vcs.log.VcsLogUserFilter; import com.intellij.vcs.log.VcsUser; import com.intellij.vcs.log.data.VcsLogDataManager; import com.intellij.vcs.log.data.VcsLogUiProperties; +import com.intellij.vcs.log.util.VcsUserUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -94,7 +95,7 @@ class UserFilterPopupComponent extends MultipleValueFilterPopupComponent() { @Override public String fun(VcsUser user) { - return user.getName(); + return VcsUserUtil.getShortPresentation(user); } }); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java index 4ecf33a81353..032bf599e281 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java @@ -46,6 +46,7 @@ import com.intellij.vcs.log.data.VisiblePack; import com.intellij.vcs.log.ui.VcsLogColorManager; import com.intellij.vcs.log.ui.render.VcsRefPainter; import com.intellij.vcs.log.ui.tables.GraphTableModel; +import com.intellij.vcs.log.util.VcsUserUtil; import net.miginfocom.swing.MigLayout; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -440,8 +441,8 @@ class DetailsPanel extends JPanel implements ListSelectionListener { long authorTime = commit.getAuthorTime(); long commitTime = commit.getCommitTime(); - String authorText = commit.getAuthor().getName() + formatDateTime(authorTime); - if (!commit.getAuthor().equals(commit.getCommitter())) { + String authorText = VcsUserUtil.getShortPresentation(commit.getAuthor()) + formatDateTime(authorTime); + if (!VcsUserUtil.isSamePerson(commit.getAuthor(), commit.getCommitter())) { String commitTimeText; if (authorTime != commitTime) { commitTimeText = formatDateTime(commitTime); @@ -449,7 +450,7 @@ class DetailsPanel extends JPanel implements ListSelectionListener { else { commitTimeText = ""; } - authorText += " (committed by " + commit.getCommitter().getName() + commitTimeText + ")"; + authorText += " (committed by " + VcsUserUtil.getShortPresentation(commit.getCommitter()) + commitTimeText + ")"; } else if (authorTime != commitTime) { authorText += " (committed " + formatDateTime(commitTime) + ")"; diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java index bcbf96180059..f5f755df28cc 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java @@ -38,6 +38,7 @@ import com.intellij.vcs.log.ui.VcsLogUiImpl; import com.intellij.vcs.log.ui.actions.IntelliSortChooserPopupAction; import com.intellij.vcs.log.ui.filter.VcsLogClassicFilterUi; import com.intellij.vcs.log.util.BekUtil; +import com.intellij.vcs.log.util.VcsUserUtil; import net.miginfocom.swing.MigLayout; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -276,7 +277,7 @@ public class MainFrame extends JPanel implements DataProvider, Disposable { .map2Array(details, CommittedChangeListForRevision.class, new Function() { @Override public CommittedChangeListForRevision fun(@NotNull VcsFullCommitDetails details) { - return new CommittedChangeListForRevision(details.getSubject(), details.getFullMessage(), details.getCommitter().getName(), + return new CommittedChangeListForRevision(details.getSubject(), details.getFullMessage(), VcsUserUtil.getShortPresentation(details.getCommitter()), new Date(details.getCommitTime()), details.getChanges(), convertToRevisionNumber(details.getId())); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java index 23dcdeaa034f..c062955c3745 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java @@ -57,6 +57,7 @@ import com.intellij.vcs.log.ui.VcsLogUiImpl; import com.intellij.vcs.log.ui.render.GraphCommitCell; import com.intellij.vcs.log.ui.render.GraphCommitCellRender; import com.intellij.vcs.log.ui.tables.GraphTableModel; +import com.intellij.vcs.log.util.VcsUserUtil; import gnu.trove.TIntHashSet; import gnu.trove.TIntProcedure; import org.jetbrains.annotations.NonNls; @@ -442,7 +443,7 @@ public class VcsLogGraphTable extends JBTable implements DataProvider, CopyProvi balloonText = "Jump to \"" + StringUtil.shortenTextWithEllipsis(details.getSubject(), 50, 0, "...") + "\" by " + - details.getAuthor().getName() + + VcsUserUtil.getShortPresentation(details.getAuthor()) + DetailsPanel.formatDateTime(details.getAuthorTime()); } return balloonText; diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/GraphTableModel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/GraphTableModel.java index 8481aed0db64..3752b3e4db6a 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/GraphTableModel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/tables/GraphTableModel.java @@ -14,6 +14,7 @@ import com.intellij.vcs.log.data.VisiblePack; import com.intellij.vcs.log.impl.VcsLogUtil; import com.intellij.vcs.log.ui.VcsLogUiImpl; import com.intellij.vcs.log.ui.render.GraphCommitCell; +import com.intellij.vcs.log.util.VcsUserUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -116,9 +117,8 @@ public class GraphTableModel extends AbstractTableModel { case COMMIT_COLUMN: return new GraphCommitCell(data.getSubject(), myDataPack.getRefs().refsToCommit(data.getId(), data.getRoot())); case AUTHOR_COLUMN: - String authorString = data.getAuthor().getName(); - if (authorString.isEmpty()) authorString = data.getAuthor().getEmail(); - return authorString + (data.getAuthor().equals(data.getCommitter()) ? "" : "*"); + String authorString = VcsUserUtil.getShortPresentation(data.getAuthor()); + return authorString + (VcsUserUtil.isSamePerson(data.getAuthor(), data.getCommitter()) ? "" : "*"); case DATE_COLUMN: if (data.getAuthorTime() < 0) { return ""; diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/util/VcsUserUtil.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/util/VcsUserUtil.java index b093574174f3..574429b39b39 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/util/VcsUserUtil.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/util/VcsUserUtil.java @@ -44,7 +44,12 @@ public class VcsUserUtil { } @NotNull - public static String getName(@NotNull VcsUser user) { + public static String getShortPresentation(@NotNull VcsUser user) { + return getName(user); + } + + @NotNull + private static String getName(@NotNull VcsUser user) { if (!user.getName().isEmpty()) return user.getName(); String emailNamePart = getNameFromEmail(user.getEmail()); if (emailNamePart != null) return emailNamePart; diff --git a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java index a654a1745692..7b65d4bd05bb 100644 --- a/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java +++ b/plugins/git4idea/src/git4idea/checkin/GitCheckinEnvironment.java @@ -50,6 +50,7 @@ import com.intellij.util.ui.UIUtil; import com.intellij.vcs.log.VcsFullCommitDetails; import com.intellij.vcs.log.VcsUser; import com.intellij.vcs.log.VcsUserRegistry; +import com.intellij.vcs.log.util.VcsUserUtil; import com.intellij.vcsUtil.VcsFileUtil; import com.intellij.vcsUtil.VcsUtil; import git4idea.GitUtil; @@ -657,7 +658,7 @@ public class GitCheckinEnvironment implements CheckinEnvironment { return ContainerUtil.map(userRegistry.getUsers(), new Function() { @Override public String fun(VcsUser user) { - return user.getName() + " <" + user.getEmail() + ">"; + return VcsUserUtil.toExactString(user); } }); } @@ -694,7 +695,7 @@ public class GitCheckinEnvironment implements CheckinEnvironment { Object data = list.getData(); if (data instanceof VcsFullCommitDetails) { VcsFullCommitDetails commit = (VcsFullCommitDetails)data; - String author = String.format("%s <%s>", commit.getAuthor().getName(), commit.getAuthor().getEmail()); + String author = VcsUserUtil.toExactString(commit.getAuthor()); myAuthorField.setText(author); myAuthorDate = new Date(commit.getAuthorTime()); } diff --git a/plugins/git4idea/src/git4idea/cherrypick/GitCherryPicker.java b/plugins/git4idea/src/git4idea/cherrypick/GitCherryPicker.java index e7ab12d8b4d4..5a4f9597dec1 100644 --- a/plugins/git4idea/src/git4idea/cherrypick/GitCherryPicker.java +++ b/plugins/git4idea/src/git4idea/cherrypick/GitCherryPicker.java @@ -39,6 +39,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.vcs.log.Hash; import com.intellij.vcs.log.VcsFullCommitDetails; import com.intellij.vcs.log.VcsLog; +import com.intellij.vcs.log.util.VcsUserUtil; import git4idea.GitLocalBranch; import git4idea.GitPlatformFacade; import git4idea.GitVcs; @@ -153,7 +154,7 @@ public class GitCherryPicker extends VcsCherryPicker { } else if (conflictDetector.hasHappened()) { boolean mergeCompleted = new CherryPickConflictResolver(myProject, myGit, myPlatformFacade, repository.getRoot(), - commit.getId().asString(), commit.getAuthor().getName(), + commit.getId().asString(), VcsUserUtil.getShortPresentation(commit.getAuthor()), commit.getSubject()).merge(); if (mergeCompleted) { @@ -227,7 +228,7 @@ public class GitCherryPicker extends VcsCherryPicker { @NotNull List successfulCommits) { NotificationListener resolveLinkListener = new ResolveLinkListener(myProject, myGit, myPlatformFacade, repository.getRoot(), commit.getCommit().getId().toShortString(), - commit.getCommit().getAuthor().getName(), + VcsUserUtil.getShortPresentation(commit.getCommit().getAuthor()), commit.getSubject()); String description = commitDetails(commit) + "
Unresolved conflicts remain in the working tree. Resolve them."; diff --git a/plugins/git4idea/src/git4idea/reset/GitNewResetDialog.java b/plugins/git4idea/src/git4idea/reset/GitNewResetDialog.java index 58363b917992..8f5280d2cdd3 100644 --- a/plugins/git4idea/src/git4idea/reset/GitNewResetDialog.java +++ b/plugins/git4idea/src/git4idea/reset/GitNewResetDialog.java @@ -26,6 +26,7 @@ import com.intellij.util.ui.GridBag; import com.intellij.util.ui.RadioButtonEnumModel; import com.intellij.util.ui.UIUtil; import com.intellij.vcs.log.VcsFullCommitDetails; +import com.intellij.vcs.log.util.VcsUserUtil; import com.intellij.xml.util.XmlStringUtil; import git4idea.repo.GitRepository; import git4idea.repo.GitRepositoryManager; @@ -119,7 +120,7 @@ public class GitNewResetDialog extends DialogWrapper { private static String getTargetText(@NotNull VcsFullCommitDetails commit) { String commitMessage = StringUtil.escapeXml(StringUtil.shortenTextWithEllipsis(commit.getSubject(), 20, 0)); return String.format("%s \"%s\" by %s", - commit.getId().toShortString(), commitMessage, commit.getAuthor().getName()); + commit.getId().toShortString(), commitMessage, VcsUserUtil.getShortPresentation(commit.getAuthor())); } @NotNull diff --git a/plugins/git4idea/src/git4idea/ui/GitCommitListPanel.java b/plugins/git4idea/src/git4idea/ui/GitCommitListPanel.java index 4351572dc090..a5cd69d13b4f 100644 --- a/plugins/git4idea/src/git4idea/ui/GitCommitListPanel.java +++ b/plugins/git4idea/src/git4idea/ui/GitCommitListPanel.java @@ -28,6 +28,7 @@ import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ListTableModel; import com.intellij.util.ui.UIUtil; +import com.intellij.vcs.log.util.VcsUserUtil; import git4idea.GitCommit; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -202,7 +203,7 @@ public class GitCommitListPanel extends JPanel implements TypeSafeDataProvider { } private static String getAuthor(GitCommit commit) { - return commit.getAuthor().getName(); + return VcsUserUtil.getShortPresentation(commit.getAuthor()); } private static String getTime(GitCommit commit) { diff --git a/plugins/git4idea/tests/git4idea/log/GitUserFilterTest.java b/plugins/git4idea/tests/git4idea/log/GitUserFilterTest.java index 5a05a7c51fe9..5a83e1c2b548 100644 --- a/plugins/git4idea/tests/git4idea/log/GitUserFilterTest.java +++ b/plugins/git4idea/tests/git4idea/log/GitUserFilterTest.java @@ -24,6 +24,7 @@ import com.intellij.util.containers.MultiMap; import com.intellij.vcs.log.*; import com.intellij.vcs.log.impl.VcsLogFilterCollectionImpl; import com.intellij.vcs.log.ui.filter.VcsLogUserFilterImpl; +import com.intellij.vcs.log.util.VcsUserUtil; import git4idea.test.GitSingleRepoTest; import git4idea.test.GitTestUtil; import junit.framework.TestCase; @@ -118,7 +119,7 @@ public class GitUserFilterTest extends GitSingleRepoTest { @NotNull Collection expectedHashes, @NotNull StringBuilder errorMessageBuilder) throws VcsException { VcsLogUserFilter userFilter = - new VcsLogUserFilterImpl(singleton(user.getName()), Collections.emptyMap(), allUsers); + new VcsLogUserFilterImpl(singleton(VcsUserUtil.getShortPresentation(user)), Collections.emptyMap(), allUsers); List actualHashes = getFilteredHashes(userFilter); List expected = ContainerUtil.reverse(ContainerUtil.newArrayList(expectedHashes));