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(); |
