【问题标题】:SVN post commit hook not working?SVN 提交后挂钩不起作用?
【发布时间】:2017-06-08 01:44:57
【问题描述】:

在我的本地盒子上导航到 TortoiseSVN,打开设置和“Hook Scripts”。单击“添加...”并输入以下值

挂钩类型 post_commit_hook

工作副本路径 https:\svn.internal.net\svn\Release_Customer

要执行的命令行 C:\postCommitHook.bat

postCommitHook.bat 文件内容是

"C:\Program Files\TortoiseSVN\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
exit 0

但是当我从我的本地框代码(指向 https:\svn.internal.net\svn\Release_Customer)提交时没有任何评论,我仍然能够提交。为什么我的 postCommitHook.bat 有限制吗?

基本上,我尝试将限制添加到 svn repo(https:\\svn.internal.net\svn\Release_Customer),因为批处理脚本位于本地框上。还好吗?

【问题讨论】:

    标签: svn hook post-commit


    【解决方案1】:

    你有两个问题:

    1. 如果您想阻止提交,则必须在 pre-commit 挂钩脚本中进行。 post-commit 钩子在成功提交之后执行,这对您的用例没有帮助。
    2. 您配置的挂钩仅对您的计算机是本地的,并且用于通过 TortoiseSVN 执行的提交。要在存储库中安装挂钩脚本,您需要对 SVN 服务器本身上的文件系统具有适当级别的访问权限,以将其放置在存储库数据库本身的 hooks 目录中。 More info in the manual

    【讨论】:

    • 是的,第一点我已经更正了。对于第二点,我相信我需要登录到安装了 SVN 服务器(到路径 repos/hooks/)的服务器,并创建 pre-commit.bat(对于 windows)将包含我想要执行的任务。正确的 ?但是我的问题是说我想为特定的 SVN 分支执行这个任务,每个分支/主干会有单独的 repo 吗?
    • 可以,但您需要获得服务器管理员的同意。挂钩脚本对于它们安装的存储库是全局的(在存储库中的每个事件上执行),但根据脚本的编码方式,您可以让它为不同的路径做不同的事情。如果您的分支位于不同的存储库中,则说明您的设置不正统且可能已损坏。
    • 这就是我的问题。回购实际上是什么?假设我有两个 svn 分支 branch1 和 branch2,它们会有单独的 repo_branch1 和 repo_branch2 还是会有单个 repo 目录?
    • 我不能告诉你,因为我无权访问你的存储库。检查分支的工作副本的 svn 信息,以查看它们是否具有相同的存储库根目录和 UUID。正如我在之前的评论中所说,它们都应该在同一个存储库中。
    猜你喜欢
    • 2014-08-10
    • 2016-06-02
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多