Mercurial > jhg
comparison src/com/tmate/hgkit/console/Status.java @ 55:05829a70b30b
Status operation extracted into separate, cache-friendly class
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Mon, 17 Jan 2011 04:45:09 +0100 |
| parents | 603806cd2dc6 |
| children | 576d6e8a09f6 |
comparison
equal
deleted
inserted
replaced
| 54:fd4f2c98995b | 55:05829a70b30b |
|---|---|
| 3 */ | 3 */ |
| 4 package com.tmate.hgkit.console; | 4 package com.tmate.hgkit.console; |
| 5 | 5 |
| 6 import static com.tmate.hgkit.ll.HgRepository.TIP; | 6 import static com.tmate.hgkit.ll.HgRepository.TIP; |
| 7 | 7 |
| 8 import java.util.ArrayList; | |
| 9 import java.util.Collections; | |
| 10 import java.util.List; | |
| 11 | |
| 8 import com.tmate.hgkit.fs.RepositoryLookup; | 12 import com.tmate.hgkit.fs.RepositoryLookup; |
| 9 import com.tmate.hgkit.ll.HgDataFile; | 13 import com.tmate.hgkit.ll.HgDataFile; |
| 10 import com.tmate.hgkit.ll.HgRepository; | 14 import com.tmate.hgkit.ll.HgRepository; |
| 11 import com.tmate.hgkit.ll.LocalHgRepo; | 15 import com.tmate.hgkit.ll.LocalHgRepo; |
| 12 import com.tmate.hgkit.ll.Nodeid; | 16 import com.tmate.hgkit.ll.Nodeid; |
| 17 import com.tmate.hgkit.ll.StatusCollector; | |
| 13 | 18 |
| 14 /** | 19 /** |
| 15 * | 20 * |
| 16 * @author artem | 21 * @author artem |
| 17 */ | 22 */ |
| 28 System.out.println(hgRepo.getLocation()); | 33 System.out.println(hgRepo.getLocation()); |
| 29 ((LocalHgRepo) hgRepo).loadDirstate().dump(); | 34 ((LocalHgRepo) hgRepo).loadDirstate().dump(); |
| 30 final StatusDump dump = new StatusDump(); | 35 final StatusDump dump = new StatusDump(); |
| 31 dump.showIgnored = false; | 36 dump.showIgnored = false; |
| 32 dump.showClean = false; | 37 dump.showClean = false; |
| 33 final int r1 = 0, r2 = 11; | 38 StatusCollector sc = new StatusCollector(hgRepo); |
| 39 final int r1 = 0, r2 = 3; | |
| 34 System.out.printf("Status for changes between revision %d and %d:\n", r1, r2); | 40 System.out.printf("Status for changes between revision %d and %d:\n", r1, r2); |
| 35 hgRepo.status(r1, r2, dump); | 41 sc.walk(r1, r2, dump); |
| 36 System.out.println("\nStatus against working dir:"); | 42 // |
| 37 ((LocalHgRepo) hgRepo).statusLocal(TIP, dump); | 43 System.out.println("\n\nSame, but sorted in the way hg status does:"); |
| 38 System.out.println(); | 44 StatusCollector.Record r = sc.status(r1, r2); |
| 39 System.out.printf("Manifest of the revision %d:\n", r2); | 45 sortAndPrint('M', r.getModified()); |
| 40 hgRepo.getManifest().walk(r2, r2, new Manifest.Dump()); | 46 sortAndPrint('A', r.getAdded()); |
| 41 System.out.println(); | 47 sortAndPrint('R', r.getRemoved()); |
| 42 System.out.printf("\nStatus of working dir against %d:\n", r2); | 48 // System.out.println("\nStatus against working dir:"); |
| 43 ((LocalHgRepo) hgRepo).statusLocal(r2, dump); | 49 // ((LocalHgRepo) hgRepo).statusLocal(TIP, dump); |
| 50 // System.out.println(); | |
| 51 // System.out.printf("Manifest of the revision %d:\n", r2); | |
| 52 // hgRepo.getManifest().walk(r2, r2, new Manifest.Dump()); | |
| 53 // System.out.println(); | |
| 54 // System.out.printf("\nStatus of working dir against %d:\n", r2); | |
| 55 // ((LocalHgRepo) hgRepo).statusLocal(r2, dump); | |
| 56 } | |
| 57 | |
| 58 private static void sortAndPrint(char prefix, List<String> ul) { | |
| 59 ArrayList<String> sortList = new ArrayList<String>(ul); | |
| 60 Collections.sort(sortList); | |
| 61 for (String s : sortList) { | |
| 62 System.out.print(prefix); | |
| 63 System.out.print(' '); | |
| 64 System.out.println(s); | |
| 65 } | |
| 44 } | 66 } |
| 45 | 67 |
| 46 protected static void testStatusInternals(HgRepository hgRepo) { | 68 protected static void testStatusInternals(HgRepository hgRepo) { |
| 47 HgDataFile n = hgRepo.getFileNode("design.txt"); | 69 HgDataFile n = hgRepo.getFileNode("design.txt"); |
| 48 for (String s : new String[] {"011dfd44417c72bd9e54cf89b82828f661b700ed", "e5529faa06d53e06a816e56d218115b42782f1ba", "c18e7111f1fc89a80a00f6a39d51288289a382fc"}) { | 70 for (String s : new String[] {"011dfd44417c72bd9e54cf89b82828f661b700ed", "e5529faa06d53e06a816e56d218115b42782f1ba", "c18e7111f1fc89a80a00f6a39d51288289a382fc"}) { |
| 51 final Nodeid nid = Nodeid.fromAscii(b, 0, b.length); | 73 final Nodeid nid = Nodeid.fromAscii(b, 0, b.length); |
| 52 System.out.println(s + " : " + n.length(nid)); | 74 System.out.println(s + " : " + n.length(nid)); |
| 53 } | 75 } |
| 54 } | 76 } |
| 55 | 77 |
| 56 private static class StatusDump implements HgRepository.StatusInspector { | 78 private static class StatusDump implements StatusCollector.Inspector { |
| 57 public boolean hideStatusPrefix = false; // hg status -n option | 79 public boolean hideStatusPrefix = false; // hg status -n option |
| 58 public boolean showCopied = true; // -C | 80 public boolean showCopied = true; // -C |
| 59 public boolean showIgnored = true; // -i | 81 public boolean showIgnored = true; // -i |
| 60 public boolean showClean = true; // -c | 82 public boolean showClean = true; // -c |
| 61 | 83 |
