Mercurial > hg4j
comparison cmdline/org/tmatesoft/hg/console/Main.java @ 305:ae8d116f4ee2
Experimental code to build file history
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Thu, 22 Sep 2011 03:57:38 +0200 |
| parents | 45dc79e545f5 |
| children | 3f40262153a4 |
comparison
equal
deleted
inserted
replaced
| 304:85b8efde5586 | 305:ae8d116f4ee2 |
|---|---|
| 18 | 18 |
| 19 import static org.tmatesoft.hg.repo.HgRepository.TIP; | 19 import static org.tmatesoft.hg.repo.HgRepository.TIP; |
| 20 | 20 |
| 21 import java.io.File; | 21 import java.io.File; |
| 22 import java.util.ArrayList; | 22 import java.util.ArrayList; |
| 23 import java.util.Collection; | |
| 23 import java.util.Collections; | 24 import java.util.Collections; |
| 24 import java.util.List; | 25 import java.util.List; |
| 25 import java.util.Map; | 26 import java.util.Map; |
| 26 | 27 |
| 27 import org.junit.Assert; | 28 import org.junit.Assert; |
| 83 System.out.println("REPO:" + hgRepo.getLocation()); | 84 System.out.println("REPO:" + hgRepo.getLocation()); |
| 84 } | 85 } |
| 85 | 86 |
| 86 public static void main(String[] args) throws Exception { | 87 public static void main(String[] args) throws Exception { |
| 87 Main m = new Main(args); | 88 Main m = new Main(args); |
| 88 m.testConsoleLog(); | 89 m.buildFileLog(); |
| 90 // m.testConsoleLog(); | |
| 89 // m.testTreeTraversal(); | 91 // m.testTreeTraversal(); |
| 90 // m.testRevisionMap(); | 92 // m.testRevisionMap(); |
| 91 // m.testSubrepos(); | 93 // m.testSubrepos(); |
| 92 // m.testReadWorkingCopy(); | 94 // m.testReadWorkingCopy(); |
| 93 // m.testParents(); | 95 // m.testParents(); |
| 102 // m.testStatusInternals(); | 104 // m.testStatusInternals(); |
| 103 // m.catCompleteHistory(); | 105 // m.catCompleteHistory(); |
| 104 // m.dumpCompleteManifestLow(); | 106 // m.dumpCompleteManifestLow(); |
| 105 // m.dumpCompleteManifestHigh(); | 107 // m.dumpCompleteManifestHigh(); |
| 106 // m.bunchOfTests(); | 108 // m.bunchOfTests(); |
| 109 } | |
| 110 | |
| 111 private void buildFileLog() { | |
| 112 final HgDataFile fn = hgRepo.getFileNode("file1"); | |
| 113 HgDataFile.HistoryWalker hw = fn.history(); | |
| 114 while (hw.hasNext()) { | |
| 115 hw.next(); | |
| 116 StringBuilder sb = new StringBuilder(); | |
| 117 Collection<Nodeid> children = hw.childChangesets(); | |
| 118 for (Nodeid cc : children) { | |
| 119 sb.append(cc.shortNotation()); | |
| 120 sb.append(", "); | |
| 121 } | |
| 122 if (hw.isJoin()) { | |
| 123 final Pair<Nodeid, Nodeid> parents = hw.parentChangesets(); | |
| 124 System.out.printf("join[(%s, %s) => %s]\n", parents.first().shortNotation(), parents.second().shortNotation(), hw.changesetRevision().shortNotation()); | |
| 125 } | |
| 126 if (hw.isFork()) { | |
| 127 System.out.printf("fork[%s => %s]\n", hw.changesetRevision().shortNotation(), sb); | |
| 128 } | |
| 129 if (!hw.isFork() && !hw.isJoin() && !children.isEmpty()) { | |
| 130 System.out.printf("%s => %s\n", hw.changesetRevision().shortNotation(), sb); | |
| 131 } | |
| 132 } | |
| 133 } | |
| 134 | |
| 135 private void buildFileLogOld() { | |
| 136 final HgDataFile fn = hgRepo.getFileNode("file1"); | |
| 137 final int[] fileChangesetRevisions = new int[fn.getRevisionCount()]; | |
| 138 fn.history(new HgChangelog.Inspector() { | |
| 139 private int fileLocalRevisions = 0; | |
| 140 private int[] parentRevisions = new int[2]; | |
| 141 | |
| 142 public void next(int revisionNumber, Nodeid nodeid, RawChangeset cset) { | |
| 143 fileChangesetRevisions[fileLocalRevisions] = revisionNumber; | |
| 144 fn.parents(fileLocalRevisions, parentRevisions, null, null); | |
| 145 boolean join = parentRevisions[0] != -1 && parentRevisions[1] != -1; | |
| 146 if (join) { | |
| 147 System.out.print("join["); | |
| 148 } | |
| 149 if (parentRevisions[0] != -1) { | |
| 150 System.out.printf("%2d->%2d, ", fileChangesetRevisions[parentRevisions[0]], revisionNumber); | |
| 151 } | |
| 152 if (parentRevisions[1] != -1) { | |
| 153 System.out.printf("%2d->%2d, ", fileChangesetRevisions[parentRevisions[1]], revisionNumber); | |
| 154 } | |
| 155 if (join) { | |
| 156 System.out.print("]"); | |
| 157 } | |
| 158 fileLocalRevisions++; | |
| 159 } | |
| 160 }); | |
| 161 System.out.println(); | |
| 107 } | 162 } |
| 108 | 163 |
| 109 private void testConsoleLog() { | 164 private void testConsoleLog() { |
| 110 LogFacility fc = new StreamLogFacility(true, true, true, System.out); | 165 LogFacility fc = new StreamLogFacility(true, true, true, System.out); |
| 111 System.out.printf("isDebug: %s, isInfo:%s\n", fc.isDebug(), fc.isInfo()); | 166 System.out.printf("isDebug: %s, isInfo:%s\n", fc.isDebug(), fc.isInfo()); |
