我通过Gitolite管理一个Git仓库,它有大约40个开发者和35,0000个文件。我们刚刚从CVS转换过来,所以很多人都在努力适应差异。
一旦出现这样的问题,我们的用户就会使用Eclipse和EGit进行工作。在CVS中,所有合并都是通过Team Sync进行的,并且冲突通过3向diff工具解决。在EGit中,合并冲突用标记装饰,以便开发人员忘记这些标记或假设它们以某种方式被移除。并非所有这些问题都会显示为编译错误,因为冲突可能在批处理文件或配置文件中。
使用这些工具的更多经验可能会解决大多数这些问题,但我想为Gitolite添加一个钩子,它会检查任何推送的.java,.bat,.xml或.properties文件,以查找以{{1}开头的任何行},<<<<<<<
或=======
后跟任何其他字符,并向用户添加警告消息,突出显示问题及其所在的文件。
这样我希望他们能抓住错误,立即纠正并从错误中吸取教训。替代方案可能是浪费时间,想知道为什么某些代码无法正常运行。
我认为正则表达式很容易,例如>>>>>>>
。因此,更重要的是Gitolite是否允许这样做,以及测试和生成这样一个脚本所需的工作量?有没有人有一个我可以适应的示例脚本呢?
我只会暂时警告用户,但我想翻转一个开关,然后直接拒绝提交。
答案 0 :(得分:1)
您需要做的就是定义VREF (which is like a plain update hook)。
然后,您可以像回购中的任何其他R / W gitolite规则一样应用此VREF规则(管理您可以仅对某些人/分支/文件夹/文件应用此规则)
您可以轻松解析正在推送的文件的内容,例如this hook:
#!/bin/bash
while read old_sha1 new_sha1 refname; do
echo "ns: " $new_sha1;
echo "os: " $old_sha1;
echo "----"
git ls-tree -r $new_sha1 | cut -f 3 -d ' ' | cut -f 1 | while read file; do
git cat-file blob $file
# do your grep here
done;
done