diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgImportHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgImportHandler.java index ad61926eef..4b6998f09a 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgImportHandler.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgImportHandler.java @@ -94,12 +94,7 @@ public class HgImportHandler extends AbstactImportHandler INIConfiguration c = reader.read(hgrc); INISection web = c.getSection("web"); - if (web == null) - { - handler.appendWebSection(c); - } - else - { + if (web != null) { repository.setDescription(web.getParameter("description")); String contact = web.getParameter("contact"); @@ -112,16 +107,7 @@ public class HgImportHandler extends AbstactImportHandler { logger.warn("contact {} is not a valid mail address", contact); } - - handler.setWebParameter(web); } - - // issue-97 - handler.registerMissingHook(c, repositoryName); - - INIConfigurationWriter writer = new INIConfigurationWriter(); - - writer.write(c, hgrc); } else { diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java index 3bb6d9e656..cb2598da5b 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java @@ -179,7 +179,6 @@ public class HgRepositoryHandler public void init(SCMContextProvider context) { super.init(context); - registerMissingHooks(); writePythonScripts(context); // fix wrong hg.bat from package installation @@ -299,100 +298,6 @@ public class HgRepositoryHandler return version; } - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - * - * @param hgrc - */ - void appendHookSection(INIConfiguration hgrc) - { - INISection hooksSection = new INISection("hooks"); - - setHookParameter(hooksSection); - hgrc.addSection(hooksSection); - } - - /** - * Method description - * - * - * @param hgrc - */ - void appendWebSection(INIConfiguration hgrc) - { - INISection webSection = new INISection("web"); - - setWebParameter(webSection); - hgrc.addSection(webSection); - } - - /** - * Method description - * - * - * @param c - * @param repositoryName - * - * @return - */ - boolean registerMissingHook(INIConfiguration c, String repositoryName) - { - INISection hooks = c.getSection("hooks"); - - if (hooks == null) - { - hooks = new INISection("hooks"); - c.addSection(hooks); - } - - boolean write = false; - - if (appendHook(repositoryName, hooks, "changegroup.scm")) - { - write = true; - } - - if (appendHook(repositoryName, hooks, "pretxnchangegroup.scm")) - { - write = true; - } - - return write; - } - - //~--- set methods ---------------------------------------------------------- - - /** - * Method description - * - * - * @param hooksSection - */ - void setHookParameter(INISection hooksSection) - { - hooksSection.setParameter("changegroup.scm", "python:scmhooks.callback"); - hooksSection.setParameter("pretxnchangegroup.scm", - "python:scmhooks.callback"); - } - - /** - * Method description - * - * - * @param webSection - */ - void setWebParameter(INISection webSection) - { - webSection.setParameter("push_ssl", "false"); - webSection.setParameter("allow_read", "*"); - webSection.setParameter("allow_push", "*"); - } - - //~--- methods -------------------------------------------------------------- - /** * Method description * @@ -431,17 +336,6 @@ public class HgRepositoryHandler protected void postCreate(Repository repository, File directory) throws IOException { - File hgrcFile = new File(directory, PATH_HGRC); - INIConfiguration hgrc = new INIConfiguration(); - - appendWebSection(hgrc); - - // register hooks - appendHookSection(hgrc); - - INIConfigurationWriter writer = new INIConfigurationWriter(); - - writer.write(hgrc, hgrcFile); } //~--- get methods ---------------------------------------------------------- @@ -460,37 +354,6 @@ public class HgRepositoryHandler //~--- methods -------------------------------------------------------------- - /** - * Method description - * - * - * @param repositoryName - * @param hooks - * @param hookName - * - * @return - */ - private boolean appendHook(String repositoryName, INISection hooks, - String hookName) - { - boolean write = false; - String hook = hooks.getParameter(hookName); - - if (Util.isEmpty(hook)) - { - if (logger.isInfoEnabled()) - { - logger.info("register missing {} hook for respository {}", hookName, - repositoryName); - } - - hooks.setParameter(hookName, "python:scmhooks.callback"); - write = true; - } - - return write; - } - /** * Method description * @@ -512,104 +375,6 @@ public class HgRepositoryHandler } } - /** - * Method description - * - * - * @param repositoryDir - * - * @return - */ - private boolean registerMissingHook(File repositoryDir) - { - boolean result = false; - File hgrc = new File(repositoryDir, PATH_HGRC); - - if (hgrc.exists()) - { - try - { - INIConfigurationReader reader = new INIConfigurationReader(); - INIConfiguration c = reader.read(hgrc); - String repositoryName = repositoryDir.getName(); - - if (registerMissingHook(c, repositoryName)) - { - if (logger.isDebugEnabled()) - { - logger.debug("rewrite hgrc for repository {}", repositoryName); - } - - INIConfigurationWriter writer = new INIConfigurationWriter(); - - writer.write(c, hgrc); - } - - result = true; - } - catch (IOException ex) - { - logger.error("could not register missing hook", ex); - } - } - - return result; - } - - /** - * Method description - * - */ - private void registerMissingHooks() - { - HgConfig c = getConfig(); - - if (c != null) - { - File repositoryDirectroy = getInitialBaseDirectory(); - if (repositoryDirectroy.exists()) - { - File lockFile = new File(repositoryDirectroy, PATH_HOOK); - - if (!lockFile.exists()) - { - File[] dirs = - repositoryDirectroy.listFiles(DirectoryFileFilter.instance); - boolean success = true; - - if (Util.isNotEmpty(dirs)) - { - for (File dir : dirs) - { - if (!registerMissingHook(dir)) - { - success = false; - } - } - } - - if (success) - { - createNewFile(lockFile); - } - } - else if (logger.isDebugEnabled()) - { - logger.debug("hooks allready registered"); - } - } - else if (logger.isDebugEnabled()) - { - logger.debug( - "repository directory does not exists, could not register missing hooks"); - } - } - else if (logger.isDebugEnabled()) - { - logger.debug("config is not available, could not register missing hooks"); - } - } - /** * Method description * diff --git a/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/python/hgweb.py b/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/python/hgweb.py index 66d5fadc3c..a511800e9d 100644 --- a/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/python/hgweb.py +++ b/scm-plugins/scm-hg-plugin/src/main/resources/sonia/scm/python/hgweb.py @@ -31,12 +31,21 @@ import os -from mercurial import demandimport +from mercurial import demandimport, ui as uimod, hg from mercurial.hgweb import hgweb, wsgicgi -repositoryPath = os.environ['SCM_REPOSITORY_PATH'] - demandimport.enable() -application = hgweb(repositoryPath) +u = uimod.ui() + +u.setconfig('web', 'push_ssl', 'false') +u.setconfig('web', 'allow_read', '*') +u.setconfig('web', 'allow_push', '*') + +u.setconfig('hooks', 'changegroup.scm', 'python:scmhooks.callback') +u.setconfig('hooks', 'pretxnchangegroup.scm', 'python:scmhooks.callback') + + +r = hg.repository(u, os.environ['SCM_REPOSITORY_PATH']) +application = hgweb(r) wsgicgi.launch(application)