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

SVN post commit hook-查找完成提交的文件夹,svn,post-commit,Svn,Post Commit,我们的存储库具有如下结构: Dev Project1 source docs ... Project2 source docs ... ... 在提交对Project1源代码的更改后,我们希望部署Project1(编译、测试、复制等)。如何在post-commit-hook中找到我们提交给Dev/Project1的项目,以便导出该项目并在其上运行一些任务?当提交给svn(例如

我们的存储库具有如下结构:

Dev
    Project1
        source
        docs
        ...
    Project2
        source
        docs
        ...
    ...
在提交对Project1源代码的更改后,我们希望部署Project1(编译、测试、复制等)。如何在post-commit-hook中找到我们提交给Dev/Project1的项目,以便导出该项目并在其上运行一些任务?当提交给svn(例如使用陆龟VN)时,ir写为:“提交:…”如何找到“提交”?

您应该使用

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


请记住:启动一个用于构建/部署的新线程,因为svn将等待提交后钩子完成(因此,在部署所有内容之前,您不会看到“提交的修订版XX”)

我建议使用连续集成服务器,而不是使用提交后钩子来完成集成任务


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

好的,当我得到所有更改的路径时,如何找到基本“项目”?以及如何启动新线程以在提交后钩子中部署?您可以使用正则表达式检查路径。在启动部署的命令中添加一个“&”(仅适用于Unix服务器),您应该使用一些脚本语言作为提交后钩子,如perl、python或vbscript。我不知道如何启动另一个线程,但在windows中启动另一个线程应该很容易。要启动另一个线程,您应该使用“start”命令作为批处理脚本的最后一行:“start test_deploy.bat”要在windows上以异步模式启动提交后挂钩,最简单的方法是调用vbs(visual basic脚本)从postCommit.bat,然后从vbs调用程序。我就是这样做的,它工作得很好,用户不必等到钩子终止。一次提交可以更改多个项目。对于subversion,项目文件夹没有什么特别之处。你是对的,对于他的问题,持续集成是更好的解决方案(+1),但是,我直接提到了他的标题和问题。