Mercurial > hg4j
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)); |