Mercurial > hg > mercurial
changeset 418:e56678c38fd5 Faradi-7.0.x
Optimize parent calculation
author | Dmitry Neverov <dmitry.neverov@jetbrains.com> |
---|---|
date | Wed, 25 Apr 2012 17:56:22 +0400 |
parents | b34ffc622efc |
children | 743dc1646555 |
files | mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java |
diffstat | 1 files changed, 16 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java Mon Mar 05 10:42:02 2012 +0400 +++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/LogCommand.java Wed Apr 25 17:56:22 2012 +0400 @@ -248,15 +248,29 @@ } private void assignTrivialParents(final @NotNull List<ChangeSet> csets) throws VcsException { + Map<Integer, ChangeSet> revNumberMap = makeMapByRevNumber(csets); for (ChangeSet cset : csets) { if (cset.getParents().isEmpty()) { int parentRevNumber = cset.getRevNumber() - 1; - String parentId = getIdOf(parentRevNumber); - cset.addParent(new ChangeSetRevision(parentRevNumber, parentId)); + ChangeSet parent = revNumberMap.get(parentRevNumber); + if (parent != null) { + cset.addParent(parent); + } else { + String parentId = getIdOf(parentRevNumber); + cset.addParent(new ChangeSetRevision(parentRevNumber, parentId)); + } } } } + private Map<Integer, ChangeSet> makeMapByRevNumber(@NotNull List<ChangeSet> csets) throws VcsException { + Map<Integer, ChangeSet> csetMap = new HashMap<Integer, ChangeSet>(); + for (ChangeSet cset : csets) { + csetMap.put(cset.getRevNumber(), cset); + } + return csetMap; + } + private String getIdOf(int revNumber) throws VcsException { if (revNumber < 0) return ZERO_PARENT_ID;