Mercurial > hg4j
comparison cmdline/org/tmatesoft/hg/console/Main.java @ 366:189dc6dc1c3e
Use exceptions to expose errors reading mercurial data
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Fri, 16 Dec 2011 04:43:18 +0100 |
| parents | 4937e35b805b |
| children | 2fadf8695f8a |
comparison
equal
deleted
inserted
replaced
| 365:3572fcb06473 | 366:189dc6dc1c3e |
|---|---|
| 118 private void buildFileLog() throws Exception { | 118 private void buildFileLog() throws Exception { |
| 119 HgLogCommand cmd = new HgLogCommand(hgRepo); | 119 HgLogCommand cmd = new HgLogCommand(hgRepo); |
| 120 cmd.file("file1", false); | 120 cmd.file("file1", false); |
| 121 cmd.execute(new HgChangesetTreeHandler() { | 121 cmd.execute(new HgChangesetTreeHandler() { |
| 122 public void next(HgChangesetTreeHandler.TreeElement entry) { | 122 public void next(HgChangesetTreeHandler.TreeElement entry) { |
| 123 StringBuilder sb = new StringBuilder(); | 123 try { |
| 124 HashSet<Nodeid> test = new HashSet<Nodeid>(entry.childRevisions()); | 124 StringBuilder sb = new StringBuilder(); |
| 125 for (HgChangeset cc : entry.children()) { | 125 HashSet<Nodeid> test = new HashSet<Nodeid>(entry.childRevisions()); |
| 126 sb.append(cc.getRevision()); | 126 for (HgChangeset cc : entry.children()) { |
| 127 sb.append(':'); | 127 sb.append(cc.getRevision()); |
| 128 sb.append(cc.getNodeid().shortNotation()); | 128 sb.append(':'); |
| 129 sb.append(", "); | 129 sb.append(cc.getNodeid().shortNotation()); |
| 130 sb.append(", "); | |
| 131 } | |
| 132 final Pair<Nodeid, Nodeid> parents = entry.parentRevisions(); | |
| 133 final boolean isJoin = !parents.first().isNull() && !parents.second().isNull(); | |
| 134 final boolean isFork = entry.children().size() > 1; | |
| 135 final HgChangeset cset = entry.changeset(); | |
| 136 System.out.printf("%d:%s - %s\n", cset.getRevision(), cset.getNodeid().shortNotation(), cset.getComment()); | |
| 137 if (!isJoin && !isFork && !entry.children().isEmpty()) { | |
| 138 System.out.printf("\t=> %s\n", sb); | |
| 139 } | |
| 140 if (isJoin) { | |
| 141 HgChangeset p1 = entry.parents().first(); | |
| 142 HgChangeset p2 = entry.parents().second(); | |
| 143 System.out.printf("\tjoin <= (%d:%s, %d:%s)", p1.getRevision(), p1.getNodeid().shortNotation(), p2.getRevision(), p2.getNodeid().shortNotation()); | |
| 144 if (isFork) { | |
| 145 System.out.print(", "); | |
| 146 } | |
| 147 } | |
| 148 if (isFork) { | |
| 149 if (!isJoin) { | |
| 150 System.out.print('\t'); | |
| 151 } | |
| 152 System.out.printf("fork => [%s]", sb); | |
| 153 } | |
| 154 if (isJoin || isFork) { | |
| 155 System.out.println(); | |
| 156 } | |
| 157 } catch (HgException ex) { | |
| 158 ex.printStackTrace(); | |
| 130 } | 159 } |
| 131 final Pair<Nodeid, Nodeid> parents = entry.parentRevisions(); | |
| 132 final boolean isJoin = !parents.first().isNull() && !parents.second().isNull(); | |
| 133 final boolean isFork = entry.children().size() > 1; | |
| 134 final HgChangeset cset = entry.changeset(); | |
| 135 System.out.printf("%d:%s - %s\n", cset.getRevision(), cset.getNodeid().shortNotation(), cset.getComment()); | |
| 136 if (!isJoin && !isFork && !entry.children().isEmpty()) { | |
| 137 System.out.printf("\t=> %s\n", sb); | |
| 138 } | |
| 139 if (isJoin) { | |
| 140 HgChangeset p1 = entry.parents().first(); | |
| 141 HgChangeset p2 = entry.parents().second(); | |
| 142 System.out.printf("\tjoin <= (%d:%s, %d:%s)", p1.getRevision(), p1.getNodeid().shortNotation(), p2.getRevision(), p2.getNodeid().shortNotation()); | |
| 143 if (isFork) { | |
| 144 System.out.print(", "); | |
| 145 } | |
| 146 } | |
| 147 if (isFork) { | |
| 148 if (!isJoin) { | |
| 149 System.out.print('\t'); | |
| 150 } | |
| 151 System.out.printf("fork => [%s]", sb); | |
| 152 } | |
| 153 if (isJoin || isFork) { | |
| 154 System.out.println(); | |
| 155 } | |
| 156 } | 160 } |
| 157 }); | 161 }); |
| 158 } | 162 } |
| 159 | 163 |
| 160 private void buildFileLogOld() { | 164 private void buildFileLogOld() throws Exception { |
| 161 final HgDataFile fn = hgRepo.getFileNode("file1"); | 165 final HgDataFile fn = hgRepo.getFileNode("file1"); |
| 162 final int[] fileChangesetRevisions = new int[fn.getRevisionCount()]; | 166 final int[] fileChangesetRevisions = new int[fn.getRevisionCount()]; |
| 163 fn.history(new HgChangelog.Inspector() { | 167 fn.history(new HgChangelog.Inspector() { |
| 164 private int fileLocalRevisions = 0; | 168 private int fileLocalRevisions = 0; |
| 165 private int[] parentRevisions = new int[2]; | 169 private int[] parentRevisions = new int[2]; |
| 166 | 170 |
| 167 public void next(int revisionNumber, Nodeid nodeid, RawChangeset cset) { | 171 public void next(int revisionNumber, Nodeid nodeid, RawChangeset cset) { |
| 168 fileChangesetRevisions[fileLocalRevisions] = revisionNumber; | 172 try { |
| 169 fn.parents(fileLocalRevisions, parentRevisions, null, null); | 173 fileChangesetRevisions[fileLocalRevisions] = revisionNumber; |
| 170 boolean join = parentRevisions[0] != -1 && parentRevisions[1] != -1; | 174 fn.parents(fileLocalRevisions, parentRevisions, null, null); |
| 171 if (join) { | 175 boolean join = parentRevisions[0] != -1 && parentRevisions[1] != -1; |
| 172 System.out.print("join["); | 176 if (join) { |
| 177 System.out.print("join["); | |
| 178 } | |
| 179 if (parentRevisions[0] != -1) { | |
| 180 System.out.printf("%2d->%2d, ", fileChangesetRevisions[parentRevisions[0]], revisionNumber); | |
| 181 } | |
| 182 if (parentRevisions[1] != -1) { | |
| 183 System.out.printf("%2d->%2d, ", fileChangesetRevisions[parentRevisions[1]], revisionNumber); | |
| 184 } | |
| 185 if (join) { | |
| 186 System.out.print("]"); | |
| 187 } | |
| 188 fileLocalRevisions++; | |
| 189 } catch (HgException ex) { | |
| 190 ex.printStackTrace(); | |
| 173 } | 191 } |
| 174 if (parentRevisions[0] != -1) { | |
| 175 System.out.printf("%2d->%2d, ", fileChangesetRevisions[parentRevisions[0]], revisionNumber); | |
| 176 } | |
| 177 if (parentRevisions[1] != -1) { | |
| 178 System.out.printf("%2d->%2d, ", fileChangesetRevisions[parentRevisions[1]], revisionNumber); | |
| 179 } | |
| 180 if (join) { | |
| 181 System.out.print("]"); | |
| 182 } | |
| 183 fileLocalRevisions++; | |
| 184 } | 192 } |
| 185 }); | 193 }); |
| 186 System.out.println(); | 194 System.out.println(); |
| 187 } | 195 } |
| 188 | 196 |
| 305 * with sort (to order revisions from linkRev before use) 610 ms | 313 * with sort (to order revisions from linkRev before use) 610 ms |
| 306 * HgChangelog.range() - 92 calls | 314 * HgChangelog.range() - 92 calls |
| 307 * RevlogStream with separate iterate(int[] sortedRevisions,...) | 315 * RevlogStream with separate iterate(int[] sortedRevisions,...) |
| 308 * RevlogStream.ReaderN1.range(): 185 380 ms | 316 * RevlogStream.ReaderN1.range(): 185 380 ms |
| 309 */ | 317 */ |
| 310 private void testEffectiveFileLog() { | 318 private void testEffectiveFileLog() throws Exception { |
| 311 for (String fname : cmdLineOpts.getList("")) { | 319 for (String fname : cmdLineOpts.getList("")) { |
| 312 System.out.println(fname); | 320 System.out.println(fname); |
| 313 final long start = System.currentTimeMillis(); | 321 final long start = System.currentTimeMillis(); |
| 314 HgDataFile fn = hgRepo.getFileNode(fname); | 322 HgDataFile fn = hgRepo.getFileNode(fname); |
| 315 if (fn.exists()) { | 323 if (fn.exists()) { |
| 379 /* | 387 /* |
| 380 * Straightforward approach to collect branches, no use of branchheads.cache | 388 * Straightforward approach to collect branches, no use of branchheads.cache |
| 381 * First, single run - 18 563 | 389 * First, single run - 18 563 |
| 382 * 10 runs (after 1 warm up) of HgBranches.collect took 167391 ms, ~17 seconds per run. | 390 * 10 runs (after 1 warm up) of HgBranches.collect took 167391 ms, ~17 seconds per run. |
| 383 */ | 391 */ |
| 384 private void dumpBranches() { | 392 private void dumpBranches() throws Exception { |
| 385 final long start0 = System.currentTimeMillis(); | 393 final long start0 = System.currentTimeMillis(); |
| 386 HgBranches b = hgRepo.getBranches(); | 394 HgBranches b = hgRepo.getBranches(); |
| 387 System.out.println("1:" + (System.currentTimeMillis() - start0)); | 395 System.out.println("1:" + (System.currentTimeMillis() - start0)); |
| 388 for (HgBranches.BranchInfo bi : b.getAllBranches()) { | 396 for (HgBranches.BranchInfo bi : b.getAllBranches()) { |
| 389 System.out.print(bi.getName()); | 397 System.out.print(bi.getName()); |
| 474 System.out.println(">>>Not found!"); | 482 System.out.println(">>>Not found!"); |
| 475 } | 483 } |
| 476 } | 484 } |
| 477 } | 485 } |
| 478 | 486 |
| 479 private void dumpCompleteManifestLow() { | 487 private void dumpCompleteManifestLow() throws Exception { |
| 480 hgRepo.getManifest().walk(0, TIP, new ManifestDump()); | 488 hgRepo.getManifest().walk(0, TIP, new ManifestDump()); |
| 481 } | 489 } |
| 482 | 490 |
| 483 public static final class ManifestDump implements HgManifest.Inspector2 { | 491 public static final class ManifestDump implements HgManifest.Inspector2 { |
| 484 public boolean begin(int manifestRevision, Nodeid nid, int changelogRevision) { | 492 public boolean begin(int manifestRevision, Nodeid nid, int changelogRevision) { |
| 498 System.out.println(); | 506 System.out.println(); |
| 499 return true; | 507 return true; |
| 500 } | 508 } |
| 501 } | 509 } |
| 502 | 510 |
| 503 private void dumpCompleteManifestHigh() { | 511 private void dumpCompleteManifestHigh() throws Exception { |
| 504 new HgManifestCommand(hgRepo).dirs(true).execute(new HgManifestCommand.Handler() { | 512 new HgManifestCommand(hgRepo).dirs(true).execute(new HgManifestCommand.Handler() { |
| 505 | 513 |
| 506 public void begin(Nodeid manifestRevision) { | 514 public void begin(Nodeid manifestRevision) { |
| 507 System.out.println(">> " + manifestRevision); | 515 System.out.println(">> " + manifestRevision); |
| 508 } | 516 } |
