Mercurial > hg4j
diff 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 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/repo/WorkingCopyStatusCollector.java Wed Jan 26 05:46:47 2011 +0100 +++ b/src/org/tmatesoft/hg/repo/WorkingCopyStatusCollector.java Wed Jan 26 06:18:31 2011 +0100 @@ -28,6 +28,7 @@ import java.util.TreeSet; import org.tmatesoft.hg.core.Nodeid; +import org.tmatesoft.hg.repo.StatusCollector.ManifestRevisionInspector; import org.tmatesoft.hg.util.FileWalker; /** @@ -83,10 +84,10 @@ if (baseRevisionCollector != null) { collect = baseRevisionCollector.raw(baseRevision); } else { - collect = new StatusCollector.ManifestRevisionInspector(baseRevision, baseRevision); + collect = new StatusCollector.ManifestRevisionInspector(); repo.getManifest().walk(baseRevision, baseRevision, collect); } - baseRevFiles = new TreeSet<String>(collect.files(baseRevision)); + baseRevFiles = new TreeSet<String>(collect.files()); } if (inspector instanceof StatusCollector.Record) { StatusCollector sc = baseRevisionCollector == null ? new StatusCollector(repo) : baseRevisionCollector; @@ -102,9 +103,7 @@ } else if (knownEntries.remove(fname)) { // modified, added, removed, clean if (collect != null) { // need to check against base revision, not FS file - Nodeid nid1 = collect.nodeid(baseRevision, fname); - String flags = collect.flags(baseRevision, fname); - checkLocalStatusAgainstBaseRevision(baseRevFiles, nid1, flags, fname, f, inspector); + checkLocalStatusAgainstBaseRevision(baseRevFiles, collect, fname, f, inspector); baseRevFiles.remove(fname); } else { checkLocalStatusAgainstFile(fname, f, inspector); @@ -166,8 +165,10 @@ } // XXX refactor checkLocalStatus methods in more OO way - private void checkLocalStatusAgainstBaseRevision(Set<String> baseRevNames, Nodeid nid1, String flags, String fname, File f, StatusCollector.Inspector inspector) { + private void checkLocalStatusAgainstBaseRevision(Set<String> baseRevNames, ManifestRevisionInspector collect, String fname, File f, StatusCollector.Inspector inspector) { // fname is in the dirstate, either Normal, Added, Removed or Merged + Nodeid nid1 = collect.nodeid(fname); + String flags = collect.flags(fname); HgDirstate.Record r; if (nid1 == null) { // normal: added?