在每次提交前强制重新基(git)
在你们评判我问了(也许)愚蠢的问题之前,我必须提到我是git的新手。我在一个环境中工作,我们有很多分支机构,其中一个被认为是主线。因为我们有不同的团队来处理这个项目,所以我们将jenkins配置为在任何分支上的每次提交之后构建和运行测试。但是问题来了,人们在没有使用主线重定基址的情况下在他们的分支上进行提交,因此测试有时会失败,因为在主线中为提到的测试推送了修改,而人们在他们的分支上没有修改。如果git没有使用主线分支重新设置基址,有没有办法配置git以拒绝任何提交 更新: 我目前正在尝试(预提交挂钩): 但是if总是返回true。命令在每次提交前强制重新基(git),git,git-config,Git,Git Config,在你们评判我问了(也许)愚蠢的问题之前,我必须提到我是git的新手。我在一个环境中工作,我们有很多分支机构,其中一个被认为是主线。因为我们有不同的团队来处理这个项目,所以我们将jenkins配置为在任何分支上的每次提交之后构建和运行测试。但是问题来了,人们在没有使用主线重定基址的情况下在他们的分支上进行提交,因此测试有时会失败,因为在主线中为提到的测试推送了修改,而人们在他们的分支上没有修改。如果git没有使用主线分支重新设置基址,有没有办法配置git以拒绝任何提交 更新: 我目前正在尝试(预提
git rev list--left-right--count mainbrance…@|cut-f1>0
应该返回(它确实返回)我的mainbrance在前面的提交数量(如果>0,那么我需要重新设置基础)。
我做错了什么?您似乎有一个简单的shell脚本问题。你的命令
if git rev-list --left-right --count mainbranch...@ | cut -f1 > 0
解释为“运行git rev list
,将其输送到cut
,并将输出写入名为0
”的文件,该操作将始终成功
您需要的是“运行git rev list
,将其输送到cut
,并将结果与编号0
”进行比较:
首先,您不必重新设置分支的基础以使其更新;您还可以合并,这可能是一个更简单的选择。是的,您可能可以编写一个钩子来检查这一点,但是如果您只使用像GitHub这样的工具,它具有拉请求,您可以松散地强制功能分支与其目标是最新的。我们使用的是TFS。我会查一查是否有完成你提到的任务的指南。现在,我不知道怎么做:(有人能帮我在提交前用钩子强制执行重基吗?我不想不回答这个问题,但我真的认为你的问题不在于重基。我认为你的实际问题是,据我所知,你的测试与被测代码不在同一个分支或存储库中。你说«我们配置了jenkins在任何分支上的每次提交之后构建和运行测试»:这很完美。但是,每个分支都应该有这些测试的版本,并且Jenkins应该配置为运行分支中的测试,而不总是运行主线分支中的测试。
if git rev-list --left-right --count mainbranch...@ | cut -f1 > 0
if [[ "$(git rev-list --left-right --count mainbranch...@ | cut -f1)" > 0 ]]