// -agentlib:hprof=heap=sites,depth=10,etc might be handy to debug speed/memory issues
public static void main(String[] args) throws Exception {
Options cmdLineOpts = Options.parse(args, asSet("--debug", "-v", "--verbose", "--hg4j-order-direct"));
HgRepository hgRepo = cmdLineOpts.findRepository();
if (hgRepo.isInvalid()) {
System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation());
return;
}
//
// in fact, neither cancel nor progress of any use, need them just to check comamnd API
final CancelSupport noCancel = CancelSupport.Factory.get(null);
final ProgressSupport noProgress = ProgressSupport.Factory.get(null);
//
final Dump dump = new Dump(hgRepo);
dump.complete(cmdLineOpts.getBoolean("--debug"));
dump.verbose(cmdLineOpts.getBoolean("-v", "--verbose"));
final boolean reverseOrder = !cmdLineOpts.getBoolean("--hg4j-order-direct");
dump.reversed(reverseOrder);
HgLogCommand cmd = new HgLogCommand(hgRepo);
for (String u : cmdLineOpts.getList("-u", "--user")) {
cmd.user(u);
}
for (String b : cmdLineOpts.getList("-b", "--branches")) {
cmd.branch(b);
}
int limit = cmdLineOpts.getSingleInt(-1, "-l", "--limit");
if (limit != -1) {
cmd.limit(limit);
}
cmd.set(noCancel).set(noProgress);
List<String> files = cmdLineOpts.getList("");
final long start = System.currentTimeMillis();
if (files.isEmpty()) {
if (limit == -1) {
// no revisions and no limit
cmd.execute(dump);
} else {
// in fact, external (to dump inspector) --limit processing yelds incorrect results when other args
// e.g. -u or -b are used (i.e. with -u shall give <limit> csets with user, not check last <limit> csets for user
int[] r = new int[] { 0, hgRepo.getChangelog().getRevisionCount() };
if (fixRange(r, reverseOrder, limit) == 0) {
System.out.println("No changes");
return;
}
cmd.range(r[0], r[1]).execute(dump);
}
dump.done();
} else {
for (String fname : files) {
HgDataFile f1 = hgRepo.getFileNode(fname);
System.out.println("History of the file: " + f1.getPath());
if (limit == -1) {
cmd.file(f1.getPath(), true).execute(dump);
} else {
int[] r = new int[] { 0, f1.getRevisionCount() };