tikhomirov@13: /* tikhomirov@72: * Copyright (c) 2010-2011 TMate Software Ltd tikhomirov@72: * tikhomirov@72: * This program is free software; you can redistribute it and/or modify tikhomirov@72: * it under the terms of the GNU General Public License as published by tikhomirov@72: * the Free Software Foundation; version 2 of the License. tikhomirov@72: * tikhomirov@72: * This program is distributed in the hope that it will be useful, tikhomirov@72: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@72: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@72: * GNU General Public License for more details. tikhomirov@72: * tikhomirov@72: * For information on how to redistribute this software under tikhomirov@72: * the terms of a license other than GNU General Public License tikhomirov@72: * contact TMate Software at support@svnkit.com tikhomirov@13: */ tikhomirov@72: package org.tmatesoft.hg.console; tikhomirov@13: tikhomirov@19: import static com.tmate.hgkit.ll.HgRepository.TIP; tikhomirov@19: tikhomirov@64: import org.tmatesoft.hg.core.Path; tikhomirov@64: import org.tmatesoft.hg.core.RepositoryTreeWalker; tikhomirov@64: import org.tmatesoft.hg.core.LogCommand.FileRevision; tikhomirov@64: tikhomirov@13: import com.tmate.hgkit.fs.RepositoryLookup; tikhomirov@19: import com.tmate.hgkit.ll.HgManifest; tikhomirov@13: import com.tmate.hgkit.ll.HgRepository; tikhomirov@19: import com.tmate.hgkit.ll.Nodeid; tikhomirov@13: tikhomirov@13: /** tikhomirov@13: * tikhomirov@72: * @author Artem Tikhomirov tikhomirov@72: * @author TMate Software Ltd. tikhomirov@13: */ tikhomirov@13: public class Manifest { tikhomirov@13: tikhomirov@13: public static void main(String[] args) throws Exception { tikhomirov@13: RepositoryLookup repoLookup = new RepositoryLookup(); tikhomirov@13: RepositoryLookup.Options cmdLineOpts = RepositoryLookup.Options.parse(args); tikhomirov@13: HgRepository hgRepo = repoLookup.detect(cmdLineOpts); tikhomirov@13: if (hgRepo.isInvalid()) { tikhomirov@13: System.err.printf("Can't find repository in: %s\n", hgRepo.getLocation()); tikhomirov@13: return; tikhomirov@13: } tikhomirov@13: System.out.println(hgRepo.getLocation()); tikhomirov@64: hgRepo.getManifest().walk(0, TIP, new Dump()); tikhomirov@64: // tikhomirov@64: new RepositoryTreeWalker(hgRepo).dirs(true).walk(new RepositoryTreeWalker.Handler() { tikhomirov@64: tikhomirov@64: public void begin(Nodeid manifestRevision) { tikhomirov@64: System.out.println(">> " + manifestRevision); tikhomirov@64: } tikhomirov@64: public void dir(Path p) { tikhomirov@64: System.out.println(p); tikhomirov@64: } tikhomirov@64: public void file(FileRevision fileRevision) { tikhomirov@64: System.out.print(fileRevision.getRevision());; tikhomirov@64: System.out.print(" "); tikhomirov@64: System.out.println(fileRevision.getPath()); tikhomirov@64: } tikhomirov@64: tikhomirov@64: public void end(Nodeid manifestRevision) { tikhomirov@64: System.out.println(); tikhomirov@64: } tikhomirov@64: }); tikhomirov@13: } tikhomirov@22: tikhomirov@22: public static final class Dump implements HgManifest.Inspector { tikhomirov@22: public boolean begin(int revision, Nodeid nid) { tikhomirov@22: System.out.printf("%d : %s\n", revision, nid); tikhomirov@22: return true; tikhomirov@22: } tikhomirov@22: tikhomirov@22: public boolean next(Nodeid nid, String fname, String flags) { tikhomirov@22: System.out.println(nid + "\t" + fname + "\t\t" + flags); tikhomirov@22: return true; tikhomirov@22: } tikhomirov@22: tikhomirov@22: public boolean end(int revision) { tikhomirov@22: System.out.println(); tikhomirov@22: return true; tikhomirov@22: } tikhomirov@22: } tikhomirov@13: }