Mercurial > jhg
comparison cmdline/org/tmatesoft/hg/console/Status.java @ 74:6f1b88693d48
Complete refactoring to org.tmatesoft
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Mon, 24 Jan 2011 03:14:45 +0100 |
| parents | 9a03a80a0f2f |
| children | 61eedab3eb3e |
comparison
equal
deleted
inserted
replaced
| 73:0d279bcc4442 | 74:6f1b88693d48 |
|---|---|
| 14 * the terms of a license other than GNU General Public License | 14 * the terms of a license other than GNU General Public License |
| 15 * contact TMate Software at support@svnkit.com | 15 * contact TMate Software at support@svnkit.com |
| 16 */ | 16 */ |
| 17 package org.tmatesoft.hg.console; | 17 package org.tmatesoft.hg.console; |
| 18 | 18 |
| 19 import static com.tmate.hgkit.ll.HgRepository.TIP; | 19 import static org.tmatesoft.hg.repo.HgRepository.TIP; |
| 20 | 20 |
| 21 import java.util.ArrayList; | 21 import java.util.ArrayList; |
| 22 import java.util.Collections; | 22 import java.util.Collections; |
| 23 import java.util.List; | 23 import java.util.List; |
| 24 import java.util.Map; | |
| 24 | 25 |
| 25 import com.tmate.hgkit.fs.RepositoryLookup; | 26 import org.tmatesoft.hg.core.Nodeid; |
| 26 import com.tmate.hgkit.ll.HgDataFile; | 27 import org.tmatesoft.hg.core.Path; |
| 27 import com.tmate.hgkit.ll.HgRepository; | 28 import org.tmatesoft.hg.repo.HgDataFile; |
| 28 import com.tmate.hgkit.ll.Internals; | 29 import org.tmatesoft.hg.repo.HgRepository; |
| 29 import com.tmate.hgkit.ll.LocalHgRepo; | 30 import org.tmatesoft.hg.repo.Internals; |
| 30 import com.tmate.hgkit.ll.Nodeid; | 31 import org.tmatesoft.hg.repo.StatusCollector; |
| 31 import com.tmate.hgkit.ll.StatusCollector; | 32 import org.tmatesoft.hg.repo.WorkingCopyStatusCollector; |
| 32 import com.tmate.hgkit.ll.WorkingCopyStatusCollector; | |
| 33 | 33 |
| 34 /** | 34 /** |
| 35 * | 35 * |
| 36 * @author Artem Tikhomirov | 36 * @author Artem Tikhomirov |
| 37 * @author TMate Software Ltd. | 37 * @author TMate Software Ltd. |
| 38 */ | 38 */ |
| 39 public class Status { | 39 public class Status { |
| 40 | 40 |
| 41 public static void main(String[] args) throws Exception { | 41 public static void main(String[] args) throws Exception { |
| 42 RepositoryLookup repoLookup = new RepositoryLookup(); | 42 Options cmdLineOpts = Options.parse(args); |
| 43 RepositoryLookup.Options cmdLineOpts = RepositoryLookup.Options.parse(args); | 43 HgRepository hgRepo = cmdLineOpts.findRepository(); |
| 44 HgRepository hgRepo = repoLookup.detect(cmdLineOpts); | |
| 45 if (hgRepo.isInvalid()) { | 44 if (hgRepo.isInvalid()) { |
| 46 System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation()); | 45 System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation()); |
| 47 return; | 46 return; |
| 48 } | 47 } |
| 49 System.out.println(hgRepo.getLocation()); | 48 System.out.println(hgRepo.getLocation()); |
| 49 // | |
| 50 // bunchOfTests(hgRepo); | |
| 51 // | |
| 52 // new Internals(hgRepo).dumpDirstate(); | |
| 53 // | |
| 54 mardu(hgRepo); | |
| 55 } | |
| 56 | |
| 57 private static void mardu(HgRepository hgRepo) { | |
| 58 WorkingCopyStatusCollector wcc = new WorkingCopyStatusCollector(hgRepo); | |
| 59 StatusCollector.Record r = new StatusCollector.Record(); | |
| 60 wcc.walk(TIP, r); | |
| 61 sortAndPrint('M', r.getModified()); | |
| 62 sortAndPrint('A', r.getAdded(), r.getCopied()); | |
| 63 sortAndPrint('R', r.getRemoved()); | |
| 64 sortAndPrint('?', r.getUnknown()); | |
| 65 // sortAndPrint('I', r.getIgnored()); | |
| 66 // sortAndPrint('C', r.getClean()); | |
| 67 sortAndPrint('!', r.getMissing()); | |
| 68 } | |
| 69 | |
| 70 private static void bunchOfTests(HgRepository hgRepo) throws Exception { | |
| 50 Internals debug = new Internals(hgRepo); | 71 Internals debug = new Internals(hgRepo); |
| 51 debug.dumpDirstate(); | 72 debug.dumpDirstate(); |
| 52 final StatusDump dump = new StatusDump(); | 73 final StatusDump dump = new StatusDump(); |
| 53 dump.showIgnored = false; | 74 dump.showIgnored = false; |
| 54 dump.showClean = false; | 75 dump.showClean = false; |
| 64 sortAndPrint('R', r.getRemoved()); | 85 sortAndPrint('R', r.getRemoved()); |
| 65 // | 86 // |
| 66 System.out.println("\n\nTry hg status --change <rev>:"); | 87 System.out.println("\n\nTry hg status --change <rev>:"); |
| 67 sc.change(0, dump); | 88 sc.change(0, dump); |
| 68 System.out.println("\nStatus against working dir:"); | 89 System.out.println("\nStatus against working dir:"); |
| 69 WorkingCopyStatusCollector wcc = new WorkingCopyStatusCollector(hgRepo, ((LocalHgRepo) hgRepo).createWorkingDirWalker()); | 90 WorkingCopyStatusCollector wcc = new WorkingCopyStatusCollector(hgRepo); |
| 70 wcc.walk(TIP, dump); | 91 wcc.walk(TIP, dump); |
| 71 System.out.println(); | 92 System.out.println(); |
| 72 System.out.printf("Manifest of the revision %d:\n", r2); | 93 System.out.printf("Manifest of the revision %d:\n", r2); |
| 73 hgRepo.getManifest().walk(r2, r2, new Manifest.Dump()); | 94 hgRepo.getManifest().walk(r2, r2, new Manifest.Dump()); |
| 74 System.out.println(); | 95 System.out.println(); |
| 75 System.out.printf("\nStatus of working dir against %d:\n", r2); | 96 System.out.printf("\nStatus of working dir against %d:\n", r2); |
| 76 r = wcc.status(r2); | 97 r = wcc.status(r2); |
| 77 sortAndPrint('M', r.getModified()); | 98 sortAndPrint('M', r.getModified()); |
| 78 sortAndPrint('A', r.getAdded()); | 99 sortAndPrint('A', r.getAdded(), r.getCopied()); |
| 79 sortAndPrint('R', r.getRemoved()); | 100 sortAndPrint('R', r.getRemoved()); |
| 80 sortAndPrint('?', r.getUnknown()); | 101 sortAndPrint('?', r.getUnknown()); |
| 81 sortAndPrint('I', r.getIgnored()); | 102 sortAndPrint('I', r.getIgnored()); |
| 82 sortAndPrint('C', r.getClean()); | 103 sortAndPrint('C', r.getClean()); |
| 83 sortAndPrint('!', r.getMissing()); | 104 sortAndPrint('!', r.getMissing()); |
| 84 } | 105 } |
| 85 | 106 |
| 86 private static void sortAndPrint(char prefix, List<String> ul) { | 107 private static void sortAndPrint(char prefix, List<String> ul) { |
| 108 sortAndPrint(prefix, ul, null); | |
| 109 } | |
| 110 private static void sortAndPrint(char prefix, List<String> ul, Map<String, String> copies) { | |
| 87 ArrayList<String> sortList = new ArrayList<String>(ul); | 111 ArrayList<String> sortList = new ArrayList<String>(ul); |
| 88 Collections.sort(sortList); | 112 Collections.sort(sortList); |
| 89 for (String s : sortList) { | 113 for (String s : sortList) { |
| 90 System.out.print(prefix); | 114 System.out.print(prefix); |
| 91 System.out.print(' '); | 115 System.out.print(' '); |
| 92 System.out.println(s); | 116 System.out.println(s); |
| 117 if (copies != null && copies.containsKey(s)) { | |
| 118 System.out.println(" " + copies.get(s)); | |
| 119 } | |
| 93 } | 120 } |
| 94 } | 121 } |
| 95 | 122 |
| 96 protected static void testStatusInternals(HgRepository hgRepo) { | 123 protected static void testStatusInternals(HgRepository hgRepo) { |
| 97 HgDataFile n = hgRepo.getFileNode("design.txt"); | 124 HgDataFile n = hgRepo.getFileNode(Path.create("design.txt")); |
| 98 for (String s : new String[] {"011dfd44417c72bd9e54cf89b82828f661b700ed", "e5529faa06d53e06a816e56d218115b42782f1ba", "c18e7111f1fc89a80a00f6a39d51288289a382fc"}) { | 125 for (String s : new String[] {"011dfd44417c72bd9e54cf89b82828f661b700ed", "e5529faa06d53e06a816e56d218115b42782f1ba", "c18e7111f1fc89a80a00f6a39d51288289a382fc"}) { |
| 99 // expected: 359, 2123, 3079 | 126 // expected: 359, 2123, 3079 |
| 100 byte[] b = s.getBytes(); | 127 byte[] b = s.getBytes(); |
| 101 final Nodeid nid = Nodeid.fromAscii(b, 0, b.length); | 128 final Nodeid nid = Nodeid.fromAscii(b, 0, b.length); |
| 102 System.out.println(s + " : " + n.length(nid)); | 129 System.out.println(s + " : " + n.length(nid)); |
