Mercurial > hg4j
comparison cmdline/org/tmatesoft/hg/console/Main.java @ 317:09628675bcee
Rework file history build approach to match rest of the API
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 29 Sep 2011 03:20:28 +0200 |
parents | 3f40262153a4 |
children | a674b8590362 |
comparison
equal
deleted
inserted
replaced
316:ee6b467c1a5f | 317:09628675bcee |
---|---|
84 System.out.println("REPO:" + hgRepo.getLocation()); | 84 System.out.println("REPO:" + hgRepo.getLocation()); |
85 } | 85 } |
86 | 86 |
87 public static void main(String[] args) throws Exception { | 87 public static void main(String[] args) throws Exception { |
88 Main m = new Main(args); | 88 Main m = new Main(args); |
89 // m.buildFileLog(); | 89 m.buildFileLog(); |
90 // m.testConsoleLog(); | 90 // m.testConsoleLog(); |
91 // m.testTreeTraversal(); | 91 // m.testTreeTraversal(); |
92 // m.testRevisionMap(); | 92 // m.testRevisionMap(); |
93 // m.testSubrepos(); | 93 // m.testSubrepos(); |
94 // m.testReadWorkingCopy(); | 94 // m.testReadWorkingCopy(); |
95 // m.testParents(); | 95 // m.testParents(); |
96 // m.testEffectiveFileLog(); | 96 // m.testEffectiveFileLog(); |
97 // m.testCatAtCsetRevision(); | 97 // m.testCatAtCsetRevision(); |
98 // m.testMergeState(); | 98 // m.testMergeState(); |
99 // m.testFileStatus(); | 99 // m.testFileStatus(); |
100 m.dumpBranches(); | 100 // m.dumpBranches(); |
101 // m.inflaterLengthException(); | 101 // m.inflaterLengthException(); |
102 // m.dumpIgnored(); | 102 // m.dumpIgnored(); |
103 // m.dumpDirstate(); | 103 // m.dumpDirstate(); |
104 // m.testStatusInternals(); | 104 // m.testStatusInternals(); |
105 // m.catCompleteHistory(); | 105 // m.catCompleteHistory(); |
108 // m.bunchOfTests(); | 108 // m.bunchOfTests(); |
109 } | 109 } |
110 | 110 |
111 private void buildFileLog() { | 111 private void buildFileLog() { |
112 final HgDataFile fn = hgRepo.getFileNode("file1"); | 112 final HgDataFile fn = hgRepo.getFileNode("file1"); |
113 HgDataFile.HistoryWalker hw = fn.history(); | 113 HgChangelog.TreeInspector insp = new HgChangelog.TreeInspector() { |
114 while (hw.hasNext()) { | 114 |
115 hw.next(); | 115 public void next(Nodeid changesetRevision, Pair<Nodeid, Nodeid> parentChangesets, Collection<Nodeid> childChangesets) { |
116 StringBuilder sb = new StringBuilder(); | 116 StringBuilder sb = new StringBuilder(); |
117 Collection<Nodeid> children = hw.childChangesets(); | 117 for (Nodeid cc : childChangesets) { |
118 for (Nodeid cc : children) { | 118 sb.append(cc.shortNotation()); |
119 sb.append(cc.shortNotation()); | 119 sb.append(", "); |
120 sb.append(", "); | 120 } |
121 } | 121 final boolean isJoin = !parentChangesets.first().isNull() && !parentChangesets.second().isNull(); |
122 if (hw.isJoin()) { | 122 final boolean isFork = childChangesets.size() > 1; |
123 final Pair<Nodeid, Nodeid> parents = hw.parentChangesets(); | 123 if (isJoin) { |
124 System.out.printf("join[(%s, %s) => %s]\n", parents.first().shortNotation(), parents.second().shortNotation(), hw.changesetRevision().shortNotation()); | 124 System.out.printf("join[(%s, %s) => %s]\n", parentChangesets.first().shortNotation(), parentChangesets.second().shortNotation(), changesetRevision.shortNotation()); |
125 } | 125 } |
126 if (hw.isFork()) { | 126 if (isFork) { |
127 System.out.printf("fork[%s => %s]\n", hw.changesetRevision().shortNotation(), sb); | 127 System.out.printf("fork[%s => %s]\n", changesetRevision.shortNotation(), sb); |
128 } | 128 } |
129 if (!hw.isFork() && !hw.isJoin() && !children.isEmpty()) { | 129 if (!isFork && !isJoin && !childChangesets.isEmpty()) { |
130 System.out.printf("%s => %s\n", hw.changesetRevision().shortNotation(), sb); | 130 System.out.printf("%s => %s\n", changesetRevision.shortNotation(), sb); |
131 } | 131 } |
132 } | 132 } |
133 }; | |
134 fn.history(insp); | |
133 } | 135 } |
134 | 136 |
135 private void buildFileLogOld() { | 137 private void buildFileLogOld() { |
136 final HgDataFile fn = hgRepo.getFileNode("file1"); | 138 final HgDataFile fn = hgRepo.getFileNode("file1"); |
137 final int[] fileChangesetRevisions = new int[fn.getRevisionCount()]; | 139 final int[] fileChangesetRevisions = new int[fn.getRevisionCount()]; |