【问题标题】:Post-commit hook that performs an action only if commit affects the specific path只有在提交影响特定路径时才执行操作的提交后挂钩
【发布时间】:2012-07-17 10:59:09
【问题描述】:

在某些情况下,只有在满足某些条件时才需要执行提交后操作。

例如仅在提交的修订影响 '/tags' 目录时发送电子邮件。 我在网上搜索了这样的脚本示例以在 Windows 环境中运行,但没有找到,所以我不得不自己编写。

【问题讨论】:

    标签: svn batch-file hook visualsvn-server post-commit


    【解决方案1】:

    post-commit.bat 代码:

    REM The command checks whether the committed revision changes any data under '/tags'
    "%VISUALSVN_SERVER%bin\svnlook.exe" dirs-changed %1 --revision %2 | findstr /b "[Tt]ags"
    
    REM If 'findstr' returns error code 0, it means that the commit involves the '/tags' directory.
    REM So if the the returned code is 0 the command runs external batch 'post-commit-run.bat'
    If %ERRORLEVEL% EQU 0 call %~dp0post-commit-run.bat %*
    

    【讨论】:

    • 我试图在我自己的存储库中实现这个解决方案,但由于某种原因它似乎不起作用。我不得不更改它,因为如果提交发生在“dev”分支中,我希望运行我的脚本,所以我将“Findstr /b”[Tt]ags””更改为“findstr /b”[Dd]ev” " 并且我的脚本被称为 post-commit-actions.bat 所以我也相应地更改了脚本中的文件名。脚本文件与钩子脚本保存在同一目录中。
    【解决方案2】:

    我有一个提交后 Watcher 脚本,可以完全按照您的要求进行操作。这是一个 Perl 脚本,但您可以从 ActiveState 或 Strawberry Perl 项目下载适用于 Windows 的 Perl。

    我的提交后挂钩位于GitHub。它使用 配置文件 来指定要监视的目录。 (其实每个用户都可以设置自己的配置文件)。

    【讨论】:

    • 在 Windows 环境中 Perl 有什么可能的注意事项吗? 我力求在 Windows 环境中只使用 Windows Batch 和 PowerShell 脚本。或者使用自定义钩子脚本的编译可执行文件。
    • 在 Windows 环境中使用 Perl 没问题。 Perl 是独立于平台的。 Python 也是如此。 Perl(和 Python)比批处理脚本更强大。同时,Perl 和 Python 比 PowerShell 更受欢迎。找到懂 Perl 和 Python 的人比 PowerShell 容易得多。 PowerShell 的一大优势是它包含在 Windows 环境中,而您必须下载并安装 Perl 和 Python。
    • 感谢您的跟进!
    猜你喜欢
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多