在使用Svn(或其他版本控制系统)时经常出现问题,程序员会提交一些更改并破坏构建。例如,因为:
破碎的构建是坏事 - 浪费时间,中断其他人的工作,避免它会很好。所以我正在寻找一些svn(git?)client \ tool \ plugin,它具有“提交前”的钩子,它可以检查一些基本的东西,如:
我试图找到这样的工具 - 但没有成功。现在我有想法自己创建这样的工具(使用基于插件的架构,可以轻松添加对新项目类型,文件类型和版本控制类型的支持)。但在开始研究这个工具之前,我想问一下 - 也许我错过了一些东西,这样的工具已经存在了?
谢谢
答案 0 :(得分:2)
使用http://en.wikipedia.org/wiki/Continuous_integration服务器,例如詹金斯。因为它不是版本控制系统的工作。
有时构建需要至少几分钟甚至几小时(+测试)。强迫开发人员如此缓慢地提交是非常糟糕的做法。
此外,在保持工作副本整洁的情况下,不添加/不删除文件应该不是问题。如果您设置了所有.gitignore
,提供了--assume-unchaged
,那么git status
将在提交后不显示任何内容。因此,只是教开发人员关心工作副本卫生,这有很大帮助。
答案 1 :(得分:2)
您可以使用Subversion和Git设置预提交挂钩。这些钩子基本上只是shell脚本,你可以用它们做很简单或非常复杂的事情。
一些例子:
一个简单的Git预提交钩子,用于查找未提交的.cpp文件:
untracked_cpp_files=$(git ls-files --exclude-standard -o *.cpp)
if [ -n "${untracked_cpp_files}" ]; then
echo "Unable to commit: untracked .cpp files found in repository."
exit 1
fi
这是一个Github项目,它提供了一个Git预提交钩子来检查各种语言的语法:https://github.com/shadow7412/hooks。
以及一些有用的Subversion挂钩列表:http://blog.grimsy.net/2008/07/a-few-svn-pre-commit-hooks/
答案 2 :(得分:1)
Git有这样一个系统:
man githooks
享受!