diff --git a/src/main/java/pl/project13/maven/git/GitDirLocator.java b/src/main/java/pl/project13/maven/git/GitDirLocator.java index dad40d73..7774745f 100644 --- a/src/main/java/pl/project13/maven/git/GitDirLocator.java +++ b/src/main/java/pl/project13/maven/git/GitDirLocator.java @@ -77,6 +77,25 @@ public File lookupGitDirectory(@NotNull File manuallyConfiguredDir) { */ @Nullable private File findProjectGitDirectory() { + + try { + // First, search up the file system hierarchy, then the project hierarchy... + File baseDir = this.mavenProject.getBasedir().getCanonicalFile(); + + while(baseDir != null) { + File gitDir = new File(baseDir, Constants.DOT_GIT); + + if (isExistingDirectory(gitDir)) { + return gitDir; + } + + baseDir = baseDir.getParentFile(); + } + } catch(IOException e) { + e.printStackTrace(); + // pass + } + MavenProject currentProject = this.mavenProject; while (currentProject != null) { diff --git a/src/test/java/pl/project13/maven/git/GitIntegrationTest.java b/src/test/java/pl/project13/maven/git/GitIntegrationTest.java index a3f6a0a5..45e3dce5 100644 --- a/src/test/java/pl/project13/maven/git/GitIntegrationTest.java +++ b/src/test/java/pl/project13/maven/git/GitIntegrationTest.java @@ -18,9 +18,13 @@ package pl.project13.maven.git; import com.google.common.base.Optional; +import com.google.common.io.Files; + +import org.apache.commons.io.FileUtils; import org.apache.maven.project.MavenProject; import org.eclipse.jgit.api.Git; import org.jetbrains.annotations.NotNull; +import org.junit.After; import org.junit.Before; import java.io.File; @@ -32,7 +36,7 @@ public abstract class GitIntegrationTest { - final String SANDBOX_DIR = "target/sandbox"; + final String SANDBOX_DIR = Files.createTempDir().getAbsolutePath(); protected GitCommitIdMojo mojo; protected FileSystemMavenSandbox mavenSandbox; @@ -44,6 +48,11 @@ public void setUp() throws Exception { initializeMojoWithDefaults(mojo); } + @After + public void tearDown() throws Exception { + FileUtils.deleteDirectory(new File(SANDBOX_DIR)); + } + protected Git git() throws IOException, InterruptedException { return Git.open(dotGitDir(projectDir())); }