分享共同的/有用的SVN预先承诺挂钩[封闭]
-
23-08-2019 - |
题
什么是一些共同的和/或有用的预先承诺挂钩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源被显示在浏览器,而不是呈现标记)。
插入一个音符到螳螂错误追踪系统与基于具有“问题#”或经由正则表达式等提交消息变更表的信息。
,它有一个提交消息,并且它是!=比“错误修复”。妈的,没我讨厌那些无用短信!
我用下面的钩子脚本,使源代码肯定行尾和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:合并信息将始终被设置