Mercurial > jhg
comparison cmdline/org/tmatesoft/hg/console/Main.java @ 233:1d389c0cb0a5
Optimize file history walk not to iterat over whole changelog for sparse and distant revisions
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Fri, 03 Jun 2011 04:50:09 +0200 |
| parents | b7347daa50e3 |
| children | fd845a53f53d |
comparison
equal
deleted
inserted
replaced
| 232:b7347daa50e3 | 233:1d389c0cb0a5 |
|---|---|
| 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 import java.util.Map; |
| 25 | 25 |
| 26 import org.tmatesoft.hg.core.HgLogCommand; | |
| 26 import org.tmatesoft.hg.core.HgLogCommand.FileRevision; | 27 import org.tmatesoft.hg.core.HgLogCommand.FileRevision; |
| 27 import org.tmatesoft.hg.core.HgCatCommand; | 28 import org.tmatesoft.hg.core.HgCatCommand; |
| 28 import org.tmatesoft.hg.core.HgFileRevision; | 29 import org.tmatesoft.hg.core.HgFileRevision; |
| 29 import org.tmatesoft.hg.core.HgManifestCommand; | 30 import org.tmatesoft.hg.core.HgManifestCommand; |
| 30 import org.tmatesoft.hg.core.Nodeid; | 31 import org.tmatesoft.hg.core.Nodeid; |
| 31 import org.tmatesoft.hg.internal.ByteArrayChannel; | 32 import org.tmatesoft.hg.internal.ByteArrayChannel; |
| 32 import org.tmatesoft.hg.internal.DigestHelper; | 33 import org.tmatesoft.hg.internal.DigestHelper; |
| 33 import org.tmatesoft.hg.internal.PathGlobMatcher; | 34 import org.tmatesoft.hg.internal.PathGlobMatcher; |
| 34 import org.tmatesoft.hg.repo.HgBranches; | 35 import org.tmatesoft.hg.repo.HgBranches; |
| 36 import org.tmatesoft.hg.repo.HgChangelog; | |
| 35 import org.tmatesoft.hg.repo.HgDataFile; | 37 import org.tmatesoft.hg.repo.HgDataFile; |
| 36 import org.tmatesoft.hg.repo.HgInternals; | 38 import org.tmatesoft.hg.repo.HgInternals; |
| 37 import org.tmatesoft.hg.repo.HgManifest; | 39 import org.tmatesoft.hg.repo.HgManifest; |
| 38 import org.tmatesoft.hg.repo.HgMergeState; | 40 import org.tmatesoft.hg.repo.HgMergeState; |
| 39 import org.tmatesoft.hg.repo.HgRepository; | 41 import org.tmatesoft.hg.repo.HgRepository; |
| 40 import org.tmatesoft.hg.repo.HgStatusCollector; | 42 import org.tmatesoft.hg.repo.HgStatusCollector; |
| 41 import org.tmatesoft.hg.repo.HgStatusInspector; | 43 import org.tmatesoft.hg.repo.HgStatusInspector; |
| 42 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector; | 44 import org.tmatesoft.hg.repo.HgWorkingCopyStatusCollector; |
| 45 import org.tmatesoft.hg.repo.HgChangelog.RawChangeset; | |
| 43 import org.tmatesoft.hg.util.Path; | 46 import org.tmatesoft.hg.util.Path; |
| 44 | 47 |
| 45 /** | 48 /** |
| 46 * Various debug dumps. | 49 * Various debug dumps. |
| 47 * | 50 * |
| 63 System.out.println("REPO:" + hgRepo.getLocation()); | 66 System.out.println("REPO:" + hgRepo.getLocation()); |
| 64 } | 67 } |
| 65 | 68 |
| 66 public static void main(String[] args) throws Exception { | 69 public static void main(String[] args) throws Exception { |
| 67 Main m = new Main(args); | 70 Main m = new Main(args); |
| 68 m.testCatAtCsetRevision(); | 71 m.testEffectiveFileLog(); |
| 72 // m.testCatAtCsetRevision(); | |
| 69 // m.testMergeState(); | 73 // m.testMergeState(); |
| 70 // m.testFileStatus(); | 74 // m.testFileStatus(); |
| 71 // m.dumpBranches(); | 75 // m.dumpBranches(); |
| 72 // m.inflaterLengthException(); | 76 // m.inflaterLengthException(); |
| 73 // m.dumpIgnored(); | 77 // m.dumpIgnored(); |
| 77 // m.dumpCompleteManifestLow(); | 81 // m.dumpCompleteManifestLow(); |
| 78 // m.dumpCompleteManifestHigh(); | 82 // m.dumpCompleteManifestHigh(); |
| 79 // m.bunchOfTests(); | 83 // m.bunchOfTests(); |
| 80 } | 84 } |
| 81 | 85 |
| 86 private void testEffectiveFileLog() { | |
| 87 for (String fname : cmdLineOpts.getList("")) { | |
| 88 System.out.println(fname); | |
| 89 HgDataFile fn = hgRepo.getFileNode(fname); | |
| 90 if (fn.exists()) { | |
| 91 fn.history(new HgChangelog.Inspector() { | |
| 92 public void next(int revisionNumber, Nodeid nodeid, RawChangeset cset) { | |
| 93 System.out.printf("%d:%s\n", revisionNumber, nodeid); | |
| 94 } | |
| 95 }); | |
| 96 } | |
| 97 } | |
| 98 } | |
| 99 | |
| 82 // TODO as test in TestCat | 100 // TODO as test in TestCat |
| 83 private void testCatAtCsetRevision() throws Exception { | 101 private void testCatAtCsetRevision() throws Exception { |
| 84 HgCatCommand cmd = new HgCatCommand(hgRepo); | 102 HgCatCommand cmd = new HgCatCommand(hgRepo); |
| 85 cmd.file(Path.create("src/org/tmatesoft/hg/internal/RevlogStream.java")); | 103 cmd.file(Path.create("src/org/tmatesoft/hg/internal/RevlogStream.java")); |
| 86 cmd.changeset(Nodeid.fromAscii("08db726a0fb7914ac9d27ba26dc8bbf6385a0554")); | 104 cmd.changeset(Nodeid.fromAscii("08db726a0fb7914ac9d27ba26dc8bbf6385a0554")); |
| 110 private void testFileStatus() { | 128 private void testFileStatus() { |
| 111 // final Path path = Path.create("src/org/tmatesoft/hg/util/"); | 129 // final Path path = Path.create("src/org/tmatesoft/hg/util/"); |
| 112 // final Path path = Path.create("src/org/tmatesoft/hg/internal/Experimental.java"); | 130 // final Path path = Path.create("src/org/tmatesoft/hg/internal/Experimental.java"); |
| 113 // final Path path = Path.create("missing-dir/"); | 131 // final Path path = Path.create("missing-dir/"); |
| 114 // HgWorkingCopyStatusCollector wcsc = HgWorkingCopyStatusCollector.create(hgRepo, path); | 132 // HgWorkingCopyStatusCollector wcsc = HgWorkingCopyStatusCollector.create(hgRepo, path); |
| 115 HgWorkingCopyStatusCollector wcsc = HgWorkingCopyStatusCollector.create(hgRepo, new PathGlobMatcher("missing-dir/**/*")); | 133 HgWorkingCopyStatusCollector wcsc = HgWorkingCopyStatusCollector.create(hgRepo, new PathGlobMatcher("mi**")); |
| 116 wcsc.walk(TIP, new StatusDump()); | 134 wcsc.walk(TIP, new StatusDump()); |
| 117 } | 135 } |
| 118 | 136 |
| 119 private void dumpBranches() { | 137 private void dumpBranches() { |
| 120 HgBranches b = hgRepo.getBranches(); | 138 HgBranches b = hgRepo.getBranches(); |
