From 3504b12d81a5092c1beea6a7770a2fce754ee2d3 Mon Sep 17 00:00:00 2001 From: Marek Zawirski Date: Sat, 28 Jun 2008 00:06:43 +0200 Subject: [PATCH] Repository search for command line tools Introducing some simple search for git repository in parent directories of current directory. Previous version was annoying: we had to be in directory that contains .git/ or specify it explicitly by --git-dir. Signed-off-by: Marek Zawirski Signed-off-by: Robin Rosenberg --- .../src/org/spearce/jgit/pgm/Main.java | 24 +++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/org.spearce.jgit/src/org/spearce/jgit/pgm/Main.java b/org.spearce.jgit/src/org/spearce/jgit/pgm/Main.java index 44f8a428..8afd0d7a 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/pgm/Main.java +++ b/org.spearce.jgit/src/org/spearce/jgit/pgm/Main.java @@ -85,12 +85,12 @@ public class Main { private static void execute(final String[] argv) throws Exception { int argi = 0; - String gitdir = ".git"; + File gitdir = null; for (; argi < argv.length; argi++) { final String arg = argv[argi]; if (arg.startsWith("--git-dir=")) - gitdir = arg.substring("--git-dir=".length()); + gitdir = new File(arg.substring("--git-dir=".length())); else if (arg.equals("--show-stack-trace")) showStackTrace = true; else if (arg.startsWith("--")) @@ -101,8 +101,15 @@ public class Main { if (argi == argv.length) usage(); + if (gitdir == null) + gitdir = findGitDir(); + if (gitdir == null || !gitdir.isDirectory()) { + System.err.println("error: can't find git directory"); + System.exit(1); + } + final TextBuiltin cmd = createCommand(argv[argi++]); - cmd.db = new Repository(new File(gitdir)); + cmd.db = new Repository(gitdir); try { cmd.execute(subarray(argv, argi)); } finally { @@ -111,6 +118,17 @@ public class Main { } } + private static File findGitDir() { + File current = new File(".").getAbsoluteFile(); + while (current != null) { + final File gitDir = new File(current, ".git"); + if (gitDir.isDirectory()) + return gitDir; + current = current.getParentFile(); + } + return null; + } + private static String[] subarray(final String[] argv, final int i) { return Arrays.asList(argv).subList(i, argv.length).toArray( new String[0]); -- 2.11.4.GIT