代码之家  ›  专栏  ›  技术社区  ›  Dean

我如何强制在SVN提交评论中输入审阅者姓名

  •  1
  • Dean  · 技术社区  · 17 年前

    我目前使用预提交钩子阻止任何不包含注释的SVN提交。

    现在,我希望扩展此内容,以便Commit注释必须具有以下行

    名字

    目前,预提交钩子文件看起来像

    :: SET REPOS=%1
    
    :: Transform forward-slashes to back-slashes for Windows
    :: SET REPOS=%REPOS:/=^\%
    
    "C:\Program Files\VisualSVN Server\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
    IF %ERRORLEVEL% EQU 0 GOTO CHECKSUOFILES
    echo "Commit Comments are Required" >&2
    exit 1 
    

    4 回复  |  直到 17 年前
        1
  •  5
  •   anon anon    17 年前

    在我看来,这似乎是一种糟糕的做法——强迫对某些内容进行审查会抑制频繁的签到,而这正是你想要鼓励的事情之一。总的来说,我对使用版本控制软件作为某种工作流管理系统的明显趋势感到有点沮丧——这根本不是它的目的!

        2
  •  1
  •   Dean    17 年前

    我走了一条相当原始的路线来回答我自己的问题。我更改了预提交挂钩,以查找文本“Reviewed by:”,否则它将阻止提交

    这有问题

    • 您只需输入“审核人”,然后不输入姓名即可绕过它
    • 我们要求开发人员进入Reviewed by:未经审核的提交没有人

    然而,它将允许我们解析SVN日志,以查看哪些内容已经/没有被审查,以及由谁审查。

        3
  •  0
  •   Wim Coenen    17 年前

    你基本上已经有一个例子了。只需添加以下内容:

    set reviewed=no
    "C:\Program Files\VisualSVN Server\bin\svnlook.exe" log -t %2 %1 | FindStr "reviewed by" && set reviewed=yes
    if "%reviewed%"=="no" GOTO NOTREVIEWED
    

    然而。

    当变更已经提交时,审查变更是最容易的。此外,正如Neil已经提到的,你不想阻止常规的一口大小的提交。审查巨大的变化并不能很好地发挥作用。

    如果你真的想确保每一个变化都得到审查,你应该使用 feature branches 。为每个更改创建一个分支,并允许频繁的小提交而不进行审查。当更改准备就绪时,审阅者可以逐个提交检查它,并将更改合并到主干中。

        4
  •  0
  •   Shane    17 年前

    你可能想考虑使用Git之类的东西( http://git-scm.com/ )而不是SVN。使用Git,你可以拥有一个只能由你的审阅者编写的项目的“祝福”版本。这些人都在本地机器上使用代码,并可以将他们的更改推送到项目的“审查”实例。审阅者可以在“审阅”实例中看到更改,并将单个更改推送到“祝福”版本。

    Git还可以直接转换现有的SVN项目。