comparison src/org/tmatesoft/hg/repo/WorkingCopyStatusCollector.java @ 90:a95c700408a9

Correctly report copy/rename events for rev..working copy case
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Wed, 26 Jan 2011 06:31:40 +0100
parents 42bcb4bffd17
children c2ce1cfaeb9e
comparison
equal deleted inserted replaced
89:42bcb4bffd17 90:a95c700408a9
101 if (hgIgnore.isIgnored(fname)) { 101 if (hgIgnore.isIgnored(fname)) {
102 inspector.ignored(fname); 102 inspector.ignored(fname);
103 } else if (knownEntries.remove(fname)) { 103 } else if (knownEntries.remove(fname)) {
104 // modified, added, removed, clean 104 // modified, added, removed, clean
105 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
106 checkLocalStatusAgainstBaseRevision(baseRevFiles, collect, fname, f, inspector); 106 checkLocalStatusAgainstBaseRevision(baseRevFiles, collect, baseRevision, fname, f, inspector);
107 baseRevFiles.remove(fname); 107 baseRevFiles.remove(fname);
108 } else { 108 } else {
109 checkLocalStatusAgainstFile(fname, f, inspector); 109 checkLocalStatusAgainstFile(fname, f, inspector);
110 } 110 }
111 } else { 111 } else {
163 inspector.modified(fname); 163 inspector.modified(fname);
164 } 164 }
165 } 165 }
166 166
167 // XXX refactor checkLocalStatus methods in more OO way 167 // XXX refactor checkLocalStatus methods in more OO way
168 private void checkLocalStatusAgainstBaseRevision(Set<String> baseRevNames, ManifestRevisionInspector collect, String fname, File f, StatusCollector.Inspector inspector) { 168 private void checkLocalStatusAgainstBaseRevision(Set<String> baseRevNames, ManifestRevisionInspector collect, int baseRevision, String fname, File f, StatusCollector.Inspector inspector) {
169 // 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); 170 Nodeid nid1 = collect.nodeid(fname);
171 String flags = collect.flags(fname); 171 String flags = collect.flags(fname);
172 HgDirstate.Record r; 172 HgDirstate.Record r;
173 if (nid1 == null) { 173 if (nid1 == null) {
174 // normal: added? 174 // normal: added?
175 // added: not known at the time of baseRevision, shall report 175 // added: not known at the time of baseRevision, shall report
176 // merged: was not known, report as added? 176 // merged: was not known, report as added?
177 if ((r = getDirstate().checkAdded(fname)) != null) { 177 if ((r = getDirstate().checkNormal(fname)) != null) {
178 String origin = StatusCollector.getOriginIfCopy(repo, fname, baseRevNames, baseRevision);
179 if (origin != null) {
180 inspector.copied(origin, fname);
181 return;
182 }
183 } else if ((r = getDirstate().checkAdded(fname)) != null) {
178 if (r.name2 != null && baseRevNames.contains(r.name2)) { 184 if (r.name2 != null && baseRevNames.contains(r.name2)) {
179 baseRevNames.remove(r.name2); 185 baseRevNames.remove(r.name2); // XXX surely I shall not report rename source as Removed?
180 inspector.copied(r.name2, fname); 186 inspector.copied(r.name2, fname);
181 return; 187 return;
182 } 188 }
183 // fall-through, report as added 189 // fall-through, report as added
184 } else if (getDirstate().checkRemoved(fname) != null) { 190 } else if (getDirstate().checkRemoved(fname) != null) {