diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/UnixHgInstaller.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/UnixHgInstaller.java index e7d76bb2e1..187797a52c 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/UnixHgInstaller.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/UnixHgInstaller.java @@ -37,6 +37,7 @@ package sonia.scm.installer; import sonia.scm.repository.HgConfig; import sonia.scm.util.IOUtil; +import sonia.scm.util.Util; //~--- JDK imports ------------------------------------------------------------ @@ -74,8 +75,16 @@ public class UnixHgInstaller extends AbstractHgInstaller public void install(File baseDirectory, HgConfig config) throws IOException { super.install(baseDirectory, config); - config.setHgBinary(IOUtil.search(COMMAND_HG)); - config.setPythonBinary(IOUtil.search(COMMAND_PYTHON)); + + if (Util.isEmpty(config.getHgBinary())) + { + config.setHgBinary(IOUtil.search(COMMAND_HG)); + } + + if (Util.isEmpty(config.getPythonBinary())) + { + config.setPythonBinary(IOUtil.search(COMMAND_PYTHON)); + } } /** diff --git a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/WindowsHgInstaller.java b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/WindowsHgInstaller.java index fe9e02310b..4c8be9ecde 100644 --- a/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/WindowsHgInstaller.java +++ b/plugins/scm-hg-plugin/src/main/java/sonia/scm/installer/WindowsHgInstaller.java @@ -118,18 +118,26 @@ public class WindowsHgInstaller extends AbstractHgInstaller { super.install(baseDirectory, config); - String pythonBinary = getPythonBinary(); - - config.setPythonBinary(pythonBinary); - - File hgScript = getMercurialScript(pythonBinary); - File hgDirectory = getMercurialDirectory(); - - if (hgScript != null) + if (Util.isEmpty(config.getPythonBinary())) { - config.setHgBinary(hgScript.getAbsolutePath()); + String pythonBinary = getPythonBinary(); + + config.setPythonBinary(pythonBinary); } - else if (hgDirectory != null) + + if (Util.isEmpty(config.getHgBinary())) + { + File hgScript = getMercurialScript(config.getPythonBinary()); + + if (hgScript != null) + { + config.setHgBinary(hgScript.getAbsolutePath()); + } + } + + File hgDirectory = getMercurialDirectory(config.getHgBinary()); + + if (hgDirectory != null) { installHg(baseDirectory, config, hgDirectory); } @@ -304,9 +312,34 @@ public class WindowsHgInstaller extends AbstractHgInstaller * Method description * * + * + * @param hgBinary * @return */ - private File getMercurialDirectory() + private File getMercurialDirectory(String hgBinary) + { + File directory = null; + File hg = new File(hgBinary); + + if (hg.exists() && hg.isFile()) + { + directory = hg.getParentFile(); + } + else + { + directory = getMercurialDirectoryFromRegistry(); + } + + return directory; + } + + /** + * Method description + * + * + * @return + */ + private File getMercurialDirectoryFromRegistry() { File directory = null;