SVN post commit hook - 查找已完成提交的文件夹

时间:2009-10-14 09:26:58

标签: svn post-commit

我们的存储库有这样的结构:

Dev
    Project1
        source
        docs
        ...
    Project2
        source
        docs
        ...
    ...

在我们提交对Project1源的更改之后,我们想要部署Project1(编译,测试,复制等)。如何找到我们提交给Dev / Project1的post-commit-hook,以便我们可以导出这个项目并在其上运行一些任务?当提交到svn(例如使用TortoiseSVN)时,会写入:“承诺:......”如何找到“承诺”?

2 个答案:

答案 0 :(得分:3)

你应该使用

svnlook changed -r REV REPOPATH

在post-commit钩子中。 SVN将提供REPOPATH和REV作为参数。 您将获得一个包含所有已更改路径的列表(新行分隔)。然后,您可以轻松地使用grep或其他任何内容来搜索更改的路径。

记住:启动一个用于构建/部署的新线程,因为svn将等到post-commit hook完成后(因此在部署完所有内容之前你不会看到“Committed Revision XX”)。 / p>

答案 1 :(得分:2)

我建议使用像CruiseControl.NET这样的持续集成服务器而不是使用post commit hook进行集成任务。

这些工具可以轻松监视存储库中是否存在特定网址下的更改,但它们不必使用与您的subversion服务器相同的权限运行。特别是它们永远不会破坏您的存储库。您可以在任何(旧)服务器上运行它们,同时可以在更突出/稳定/备份的服务器上运行存储库。