Mercurial > hg4j
comparison src/com/tmate/hgkit/ll/WorkingCopyStatusCollector.java @ 68:0e499fed9b3d
StatusCommand with tests. Extra constants to indicate common revision cases
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Sat, 22 Jan 2011 22:11:24 +0100 |
parents | a47530a2ea12 |
children |
comparison
equal
deleted
inserted
replaced
67:64bddc2dcc0e | 68:0e499fed9b3d |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2011 Artem Tikhomirov | 2 * Copyright (c) 2011 Artem Tikhomirov |
3 */ | 3 */ |
4 package com.tmate.hgkit.ll; | 4 package com.tmate.hgkit.ll; |
5 | 5 |
6 import static com.tmate.hgkit.ll.HgRepository.BAD_REVISION; | |
6 import static com.tmate.hgkit.ll.HgRepository.TIP; | 7 import static com.tmate.hgkit.ll.HgRepository.TIP; |
7 | 8 |
8 import java.io.BufferedInputStream; | 9 import java.io.BufferedInputStream; |
9 import java.io.File; | 10 import java.io.File; |
10 import java.io.FileInputStream; | 11 import java.io.FileInputStream; |
52 | 53 |
53 // may be invoked few times | 54 // may be invoked few times |
54 public void walk(int baseRevision, StatusCollector.Inspector inspector) { | 55 public void walk(int baseRevision, StatusCollector.Inspector inspector) { |
55 final HgIgnore hgIgnore = ((LocalHgRepo) repo).loadIgnore(); // FIXME hack | 56 final HgIgnore hgIgnore = ((LocalHgRepo) repo).loadIgnore(); // FIXME hack |
56 TreeSet<String> knownEntries = getDirstate().all(); | 57 TreeSet<String> knownEntries = getDirstate().all(); |
57 final boolean isTipBase = baseRevision == TIP || baseRevision == repo.getManifest().getRevisionCount(); | 58 final boolean isTipBase; |
59 if (baseRevision == TIP) { | |
60 baseRevision = repo.getManifest().getRevisionCount() - 1; | |
61 isTipBase = true; | |
62 } else { | |
63 isTipBase = baseRevision == repo.getManifest().getRevisionCount() - 1; | |
64 } | |
58 StatusCollector.ManifestRevisionInspector collect = null; | 65 StatusCollector.ManifestRevisionInspector collect = null; |
59 Set<String> baseRevFiles = Collections.emptySet(); | 66 Set<String> baseRevFiles = Collections.emptySet(); |
60 if (!isTipBase) { | 67 if (!isTipBase) { |
61 if (baseRevisionCollector != null) { | 68 if (baseRevisionCollector != null) { |
62 collect = baseRevisionCollector.raw(baseRevision); | 69 collect = baseRevisionCollector.raw(baseRevision); |
63 } else { | 70 } else { |
64 collect = new StatusCollector.ManifestRevisionInspector(baseRevision, baseRevision); | 71 collect = new StatusCollector.ManifestRevisionInspector(baseRevision, baseRevision); |
65 repo.getManifest().walk(baseRevision, baseRevision, collect); | 72 repo.getManifest().walk(baseRevision, baseRevision, collect); |
66 } | 73 } |
67 baseRevFiles = new TreeSet<String>(collect.files(baseRevision)); | 74 baseRevFiles = new TreeSet<String>(collect.files(baseRevision)); |
75 } | |
76 if (inspector instanceof StatusCollector.Record) { | |
77 StatusCollector sc = baseRevisionCollector == null ? new StatusCollector(repo) : baseRevisionCollector; | |
78 ((StatusCollector.Record) inspector).init(baseRevision, BAD_REVISION, sc); | |
68 } | 79 } |
69 repoWalker.reset(); | 80 repoWalker.reset(); |
70 while (repoWalker.hasNext()) { | 81 while (repoWalker.hasNext()) { |
71 repoWalker.next(); | 82 repoWalker.next(); |
72 String fname = repoWalker.name(); | 83 String fname = repoWalker.name(); |