什么是一些共同的和/或有用的预先承诺挂钩SVN?

有帮助吗?

解决方案

我们有一个post commit钩子可以职位消息发送到Twitter帐户。使用 twitsvn (免责声明:我对项目的提交)。

傻?也许......但它原来是为我们传达我们的信息库的事情上,我们的一些版本控制挑战的团队成员的好方法。一旦SVN开始通过自己的Twitter客户端与他们谈话,也没有觉得太像一个黑盒子。

其他提示

用户已经实际输入的提交消息的注释,它包含一个特定问题号来跟踪。

检查在各种文本文件的绝对路径(即VRML,XML等)。大部分签入的代码应该永远不会有绝对路径,但也有人和工具坚持生产硬编码的东西。

我做了字数上提交邮件。他们需要的是5个字以上。这导致了一些喜剧的侮辱对我......

  • 检查选项卡并拒绝 办理登机手续。
  • 检查不一致的行 结束并拒绝签入。
  • 检查是否出现“CR:[用户名]“并拒绝签入 如果没有代码审查。

您可能想看一看: http://svn.apache.org /repos/asf/subversion/branches/1.6.x/www/tools_contrib.html#hook_scripts (该页面可能会明显过时它不再被维持的Subversion 1.7)

,或直接: https://svn.apache.org/repos/asf/subversion/trunk/的contrib /

我喜欢用 svn 挂钩到:

  • 强制执行更严格的代码风格
  • 检查明显的语法错误
  • 确保特殊的 Trac 关键字(例如“修复”或“地址”)实际上位于相应的问题编号之前

我检查的文件类型,并确保某些禁用类型不是偶然的承诺(如OBJ,.PDB)。当然,不是因为第一次有人在2演出的编译器生成的临时文件检查:(

有窗口:


@echo off

svnlook log -t "%2" "%1" | c:\tools\grep -c "[a-zA-z0-9]" > nul
if %ERRORLEVEL% NEQ 1 goto DISALLOWED

echo Please enter a check-in comment 1>&2
exit 1


:DISALLOWED
svnlook changed -t %2 %1 > c:\temp\pre-commit.txt

findstr /G:"%1\hooks\ignore-matches.txt"  c:\temp\pre-commit.txt > c:\temp\precommit-bad.txt
if %ERRORLEVEL% NEQ 0 exit /b 0

echo disallowed file extension >> c:\temp\precommit-bad.txt
type c:\temp\precommit-bad.txt 1>&2
exit 1

我用一个post-commit钩子笔者属性重写从我们的LDAP树的友好名称。 (认证与雇员ID)

有一个伟大的commit钩子我们在我们的归档检查所有的.vcproj(或.csproj的)Visual Studio项目,以确保输出目录没有改变任何东西地方(通常用于调试)。

这些问题会正确编译,但仍然中断,因为缺少可执行文件的版本。

在我目前工作的公司,这是检查的:

  • 二进制文件是否需要设置锁定属性;
  • Java 文件是否具有标准版权声明并且是否包含当前年份;
  • 如果代码格式正确(我们使用 Jalopy 进行代码格式化)——这可能听起来很愚蠢,但它实际上使不同版本之间的文本比较变得更容易;
  • 如果代码有提交消息;
  • 目录结构是否符合定义(所有项目应位于定义的SVN文件夹下,每个项目应有一个tags、branch和trunk文件夹);

我想就是这样。

我喜欢检查提交是否与票证相关联的想法;这实际上对我来说很有意义。

有些人喜欢运行一个给定的语言类lint工具来发现代码中的常见问题及/或执行的编码风格。然而,在小和熟练的团队我宁愿让每一个承诺要经过和处理持续集成和/或代码审查过程中可能出现的问题。由于这个提交更快,鼓励更频繁的提交,从而导致更易于集成。

我使用入住mime-type.pl pre-commit钩子检查MIME类型和行选项的结束是在提交的文件设置。我用颠覆发布的文件是使用DAV网站上可见,并没有MIME类型集合中的所有文件会担任文本文件(例如HTML源被显示在浏览器,而不是呈现标记)。

插入一个音符到螳螂错误追踪系统与基于具有“问题#”或经由正则表达式等提交消息变更表的信息。

,它有一个提交消息,并且它是!=比“错误修复”。妈的,没我讨厌那些无用短信!

我们使用的预先承诺和后提交钩的组合,以自动更新开发人员的相关条目从svn提交。

我们使用第二(预先提交)挂钩,以确保适当的svn:终止式和svn:关键词性质上设置一个文件之前加入repostitory.

我们有一个第三(后提交)挂钩,以开启一个建立和邮件的结果,如果建立被破坏,并通知大家当的建立已被定。

我们有一个四(后提交)挂钩脱掉svn复制,以确保非现场的复制是为最新成为可能。

不幸的是,我无法公布的来源,但是,除了开发人员的整合,它们都足够容易实现, 哈德逊 可能是一个更好的选择,对于连续的一体化。

对于开发人员的一体化,我建议在看 scmbug.

我用下面的钩子脚本,使源代码肯定行尾和shell脚本的权限是正确的(这是令人沮丧的,当有人检查在窗口时,一切似乎确定并打破了UNIX版本)。

#!/bin/bash

REPOS="$1"
TXN="$2"

# Exit on all errors.
set -e
SVNLOOK=svnlook
echo "`$SVNLOOK changed -t "$TXN" "$REPOS"`" | while read REPOS_PATH
do
  if [[ $REPOS_PATH =~ A[[:blank:]]{3}(.*)\.(sh|c|h|cpp) ]]
  then
    if [ ${#BASH_REMATCH[*]} -ge 2 ]
        then
    FILENAME=${BASH_REMATCH[1]}.${BASH_REMATCH[2]};

    # Make sure shell scripts are executable
    if [[ sh == ${BASH_REMATCH[2]} ]]
    then
        EX_VALUE="true"
            if [ -z "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:executable \"$FILENAME\" 2> /dev/null`" ]
            then
            ERROR=1;
                echo "svn ps svn:executable $EX_VALUE \"$FILENAME\"" >&2
        fi
        EOL_STYLE="LF"
    else
        EOL_STYLE="native"
    fi

    # Make sure every file has the right svn:eol-style property set
        if [ $EOL_STYLE != "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:eol-style \"$FILENAME\" 2> /dev/null`" ]
        then
        ERROR=1;
            echo "svn ps svn:eol-style $EOL_STYLE \"$FILENAME\"" >&2
    fi
    fi
  fi
  test -z $ERROR || (echo "Please execute above commands to correct svn property settings." >& 2; exit 1)
done

如何钩来编译该项目?例如运行使所有。这保证了代码,不编译没有人检查! :)

在SVN 1.5解决缺乏文件的外部对象的使用PostUpdate和预提交

我享受检查[点评:XYZ]钩提交消息中音符,并拒绝提交

我想写一个检查doctype在aspx/html文件,只是为了确保每个人都是使用正确的。

还有,你可以有一个预(或以后)提交钩推动通知出CI你的服务器 如在哈得逊博客

予检查的情况下的碰撞(笨视窗)和也require-mergeinfo.pl以确保客户端是至少1.5 - 这样的svn:合并信息将始终被设置

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top