Mercurial > hg4j
comparison src/org/tmatesoft/hg/internal/ChangelogHelper.java @ 154:ba2bf656f00f
Changeset => RawChangeset
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 24 Feb 2011 22:16:19 +0100 |
parents | 1c1891ad1c73 |
children | f052f40839ec |
comparison
equal
deleted
inserted
replaced
153:ab7ea2ac21cb | 154:ba2bf656f00f |
---|---|
16 */ | 16 */ |
17 package org.tmatesoft.hg.internal; | 17 package org.tmatesoft.hg.internal; |
18 | 18 |
19 import java.util.TreeMap; | 19 import java.util.TreeMap; |
20 | 20 |
21 import org.tmatesoft.hg.repo.HgChangelog.Changeset; | 21 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; |
22 import org.tmatesoft.hg.repo.HgDataFile; | 22 import org.tmatesoft.hg.repo.HgDataFile; |
23 import org.tmatesoft.hg.repo.HgInternals; | 23 import org.tmatesoft.hg.repo.HgInternals; |
24 import org.tmatesoft.hg.repo.HgRepository; | 24 import org.tmatesoft.hg.repo.HgRepository; |
25 import org.tmatesoft.hg.util.Path; | 25 import org.tmatesoft.hg.util.Path; |
26 | 26 |
30 * @author TMate Software Ltd. | 30 * @author TMate Software Ltd. |
31 */ | 31 */ |
32 public class ChangelogHelper { | 32 public class ChangelogHelper { |
33 private final int leftBoundary; | 33 private final int leftBoundary; |
34 private final HgRepository repo; | 34 private final HgRepository repo; |
35 private final TreeMap<Integer, Changeset> cache = new TreeMap<Integer, Changeset>(); | 35 private final TreeMap<Integer, RawChangeset> cache = new TreeMap<Integer, RawChangeset>(); |
36 private String nextCommitAuthor; | 36 private String nextCommitAuthor; |
37 | 37 |
38 /** | 38 /** |
39 * @param hgRepo | 39 * @param hgRepo |
40 * @param leftBoundaryRevision walker never visits revisions with local numbers less than specified, | 40 * @param leftBoundaryRevision walker never visits revisions with local numbers less than specified, |
56 * Walks changelog in reverse order | 56 * Walks changelog in reverse order |
57 * @param file | 57 * @param file |
58 * @return changeset where specified file is mentioned among affected files, or | 58 * @return changeset where specified file is mentioned among affected files, or |
59 * <code>null</code> if none found up to leftBoundary | 59 * <code>null</code> if none found up to leftBoundary |
60 */ | 60 */ |
61 public Changeset findLatestChangeWith(Path file) { | 61 public RawChangeset findLatestChangeWith(Path file) { |
62 HgDataFile df = repo.getFileNode(file); | 62 HgDataFile df = repo.getFileNode(file); |
63 int changelogRev = df.getChangesetLocalRevision(HgRepository.TIP); | 63 int changelogRev = df.getChangesetLocalRevision(HgRepository.TIP); |
64 if (changelogRev >= leftBoundary) { | 64 if (changelogRev >= leftBoundary) { |
65 // the method is likely to be invoked for different files, | 65 // the method is likely to be invoked for different files, |
66 // while changesets might be the same. Cache 'em not to read too much. | 66 // while changesets might be the same. Cache 'em not to read too much. |
67 Changeset cs = cache.get(changelogRev); | 67 RawChangeset cs = cache.get(changelogRev); |
68 if (cs == null) { | 68 if (cs == null) { |
69 cs = repo.getChangelog().range(changelogRev, changelogRev).get(0); | 69 cs = repo.getChangelog().range(changelogRev, changelogRev).get(0); |
70 cache.put(changelogRev, cs); | 70 cache.put(changelogRev, cs); |
71 } | 71 } |
72 return cs; | 72 return cs; |