Mercurial > hg4j
comparison src/org/tmatesoft/hg/repo/WorkingCopyStatusCollector.java @ 89:42bcb4bffd17
Refactored to simplify manifest collector
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Wed, 26 Jan 2011 06:18:31 +0100 |
parents | 658fa6b3a371 |
children | a95c700408a9 |
comparison
equal
deleted
inserted
replaced
88:61eedab3eb3e | 89:42bcb4bffd17 |
---|---|
26 import java.util.Collections; | 26 import java.util.Collections; |
27 import java.util.Set; | 27 import java.util.Set; |
28 import java.util.TreeSet; | 28 import java.util.TreeSet; |
29 | 29 |
30 import org.tmatesoft.hg.core.Nodeid; | 30 import org.tmatesoft.hg.core.Nodeid; |
31 import org.tmatesoft.hg.repo.StatusCollector.ManifestRevisionInspector; | |
31 import org.tmatesoft.hg.util.FileWalker; | 32 import org.tmatesoft.hg.util.FileWalker; |
32 | 33 |
33 /** | 34 /** |
34 * | 35 * |
35 * @author Artem Tikhomirov | 36 * @author Artem Tikhomirov |
81 Set<String> baseRevFiles = Collections.emptySet(); | 82 Set<String> baseRevFiles = Collections.emptySet(); |
82 if (!isTipBase) { | 83 if (!isTipBase) { |
83 if (baseRevisionCollector != null) { | 84 if (baseRevisionCollector != null) { |
84 collect = baseRevisionCollector.raw(baseRevision); | 85 collect = baseRevisionCollector.raw(baseRevision); |
85 } else { | 86 } else { |
86 collect = new StatusCollector.ManifestRevisionInspector(baseRevision, baseRevision); | 87 collect = new StatusCollector.ManifestRevisionInspector(); |
87 repo.getManifest().walk(baseRevision, baseRevision, collect); | 88 repo.getManifest().walk(baseRevision, baseRevision, collect); |
88 } | 89 } |
89 baseRevFiles = new TreeSet<String>(collect.files(baseRevision)); | 90 baseRevFiles = new TreeSet<String>(collect.files()); |
90 } | 91 } |
91 if (inspector instanceof StatusCollector.Record) { | 92 if (inspector instanceof StatusCollector.Record) { |
92 StatusCollector sc = baseRevisionCollector == null ? new StatusCollector(repo) : baseRevisionCollector; | 93 StatusCollector sc = baseRevisionCollector == null ? new StatusCollector(repo) : baseRevisionCollector; |
93 ((StatusCollector.Record) inspector).init(baseRevision, BAD_REVISION, sc); | 94 ((StatusCollector.Record) inspector).init(baseRevision, BAD_REVISION, sc); |
94 } | 95 } |
100 if (hgIgnore.isIgnored(fname)) { | 101 if (hgIgnore.isIgnored(fname)) { |
101 inspector.ignored(fname); | 102 inspector.ignored(fname); |
102 } else if (knownEntries.remove(fname)) { | 103 } else if (knownEntries.remove(fname)) { |
103 // modified, added, removed, clean | 104 // modified, added, removed, clean |
104 if (collect != null) { // need to check against base revision, not FS file | 105 if (collect != null) { // need to check against base revision, not FS file |
105 Nodeid nid1 = collect.nodeid(baseRevision, fname); | 106 checkLocalStatusAgainstBaseRevision(baseRevFiles, collect, fname, f, inspector); |
106 String flags = collect.flags(baseRevision, fname); | |
107 checkLocalStatusAgainstBaseRevision(baseRevFiles, nid1, flags, fname, f, inspector); | |
108 baseRevFiles.remove(fname); | 107 baseRevFiles.remove(fname); |
109 } else { | 108 } else { |
110 checkLocalStatusAgainstFile(fname, f, inspector); | 109 checkLocalStatusAgainstFile(fname, f, inspector); |
111 } | 110 } |
112 } else { | 111 } else { |
164 inspector.modified(fname); | 163 inspector.modified(fname); |
165 } | 164 } |
166 } | 165 } |
167 | 166 |
168 // XXX refactor checkLocalStatus methods in more OO way | 167 // XXX refactor checkLocalStatus methods in more OO way |
169 private void checkLocalStatusAgainstBaseRevision(Set<String> baseRevNames, Nodeid nid1, String flags, String fname, File f, StatusCollector.Inspector inspector) { | 168 private void checkLocalStatusAgainstBaseRevision(Set<String> baseRevNames, ManifestRevisionInspector collect, String fname, File f, StatusCollector.Inspector inspector) { |
170 // fname is in the dirstate, either Normal, Added, Removed or Merged | 169 // fname is in the dirstate, either Normal, Added, Removed or Merged |
170 Nodeid nid1 = collect.nodeid(fname); | |
171 String flags = collect.flags(fname); | |
171 HgDirstate.Record r; | 172 HgDirstate.Record r; |
172 if (nid1 == null) { | 173 if (nid1 == null) { |
173 // normal: added? | 174 // normal: added? |
174 // added: not known at the time of baseRevision, shall report | 175 // added: not known at the time of baseRevision, shall report |
175 // merged: was not known, report as added? | 176 // merged: was not known, report as added? |