Change-Id: I700540eec06efb24eeb09bfcb40420820c32d156 Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com> Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v4.0.0.201505260635-rc2
@@ -624,7 +624,7 @@ public class AddCommandTest extends RepositoryTestCase { | |||
return this; | |||
} | |||
protected File discoverGitPrefix() { | |||
protected File discoverGitExe() { | |||
return null; | |||
} | |||
@@ -669,7 +669,7 @@ public class AddCommandTest extends RepositoryTestCase { | |||
return this; | |||
} | |||
protected File discoverGitPrefix() { | |||
protected File discoverGitExe() { | |||
return null; | |||
} | |||
@@ -108,7 +108,7 @@ public class CommitCommandTest extends RepositoryTestCase { | |||
return this; | |||
} | |||
protected File discoverGitPrefix() { | |||
protected File discoverGitExe() { | |||
return null; | |||
} | |||
@@ -153,7 +153,7 @@ public class CommitCommandTest extends RepositoryTestCase { | |||
return this; | |||
} | |||
protected File discoverGitPrefix() { | |||
protected File discoverGitExe() { | |||
return null; | |||
} | |||
@@ -504,8 +504,16 @@ public abstract class FS { | |||
return p.value; | |||
} | |||
/** | |||
* @return the path to the Git executable. | |||
* @since 4.0 | |||
*/ | |||
protected abstract File discoverGitExe(); | |||
/** @return the $prefix directory C Git would use. */ | |||
protected abstract File discoverGitPrefix(); | |||
protected File discoverGitPrefix() { | |||
return resolveGrandparentFile(discoverGitExe()); | |||
} | |||
/** | |||
* @param grandchild |
@@ -134,28 +134,26 @@ public class FS_POSIX extends FS { | |||
} | |||
@Override | |||
protected File discoverGitPrefix() { | |||
protected File discoverGitExe() { | |||
String path = SystemReader.getInstance().getenv("PATH"); //$NON-NLS-1$ | |||
File gitExe = searchPath(path, "git"); //$NON-NLS-1$ | |||
if (gitExe != null) | |||
return resolveGrandparentFile(gitExe); | |||
if (SystemReader.getInstance().isMacOS()) { | |||
if (searchPath(path, "bash") != null) { //$NON-NLS-1$ | |||
// On MacOSX, PATH is shorter when Eclipse is launched from the | |||
// Finder than from a terminal. Therefore try to launch bash as a | |||
// login shell and search using that. | |||
String w = readPipe(userHome(), | |||
new String[] { "bash", "--login", "-c", "which git" }, // //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ | |||
Charset.defaultCharset().name()); | |||
if (w == null || w.length() == 0) | |||
return null; | |||
gitExe = new File(w); | |||
return resolveGrandparentFile(gitExe); | |||
if (gitExe == null) { | |||
if (SystemReader.getInstance().isMacOS()) { | |||
if (searchPath(path, "bash") != null) { //$NON-NLS-1$ | |||
// On MacOSX, PATH is shorter when Eclipse is launched from the | |||
// Finder than from a terminal. Therefore try to launch bash as a | |||
// login shell and search using that. | |||
String w = readPipe(userHome(), | |||
new String[]{"bash", "--login", "-c", "which git"}, // //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ | |||
Charset.defaultCharset().name()); | |||
if (!StringUtils.isEmptyOrNull(w)) | |||
gitExe = new File(w); | |||
} | |||
} | |||
} | |||
return null; | |||
return gitExe; | |||
} | |||
@Override |
@@ -105,27 +105,24 @@ public class FS_Win32 extends FS { | |||
} | |||
@Override | |||
protected File discoverGitPrefix() { | |||
protected File discoverGitExe() { | |||
String path = SystemReader.getInstance().getenv("PATH"); //$NON-NLS-1$ | |||
File gitExe = searchPath(path, "git.exe", "git.cmd"); //$NON-NLS-1$ //$NON-NLS-2$ | |||
if (gitExe != null) | |||
return resolveGrandparentFile(gitExe); | |||
if (searchPath(path, "bash.exe") != null) { //$NON-NLS-1$ | |||
// This isn't likely to work, but its worth trying: | |||
// If bash is in $PATH, git should also be in $PATH. | |||
String w = readPipe(userHome(), | |||
new String[] { "bash", "--login", "-c", "which git" }, // //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ | |||
Charset.defaultCharset().name()); | |||
if (w == null || w.length() == 0) | |||
return null; | |||
// The path may be in cygwin/msys notation so resolve it right away | |||
gitExe = resolve(null, w); | |||
if (gitExe != null) | |||
return resolveGrandparentFile(gitExe); | |||
if (gitExe == null) { | |||
if (searchPath(path, "bash.exe") != null) { //$NON-NLS-1$ | |||
// This isn't likely to work, but its worth trying: | |||
// If bash is in $PATH, git should also be in $PATH. | |||
String w = readPipe(userHome(), | |||
new String[]{"bash", "--login", "-c", "which git"}, // //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ | |||
Charset.defaultCharset().name()); | |||
if (!StringUtils.isEmptyOrNull(w)) | |||
// The path may be in cygwin/msys notation so resolve it right away | |||
gitExe = resolve(null, w); | |||
} | |||
} | |||
return null; | |||
return gitExe; | |||
} | |||
@Override |