在你判断我(或许)愚蠢的问题之前,我不得不提到我是git的新手。我在一个我们有很多分支机构的环境中工作,其中一个被认为是主线。因为我们有不同的团队在项目上工作,所以我们将jenkins配置为在任何分支上的每次提交后构建和运行测试。但是问题就出现了,人们在他们的分支上提交而没有使用主线进行更改,因此测试有时会失败,因为在主线中对所提到的测试进行了修改,人们没有在他们的分支上进行修改。有没有办法我可以配置git来拒绝任何提交,如果它没有与主线分支重新组合?
更新
我正在尝试类似(pre-commit hook):
#!/bin/sh
if git rev-list --left-right --count mainbranch...@ | cut -f1 > 0
then
exi1
fi
但是if总是返回true。命令git rev-list --left-right --count mainbranch...@ | cut -f1 > 0
应该返回(并且确实)我的mainbranch提前的提交数量(如果> 0则需要重新设置)。
我做错了什么?
答案 0 :(得分:1)
您似乎有一个简单的shell脚本问题。你的命令
if git rev-list --left-right --count mainbranch...@ | cut -f1 > 0
被解释为“运行git rev-list
,将其传递给cut
,并将输出写入名为0
的文件”,这将始终成功。
您想要的是“运行git rev-list
,将其移至cut
,并将结果与数字0
进行比较”:
if [[ "$(git rev-list --left-right --count mainbranch...@ | cut -f1)" > 0 ]]