gpt4 book ai didi

git - "git push"到带有跟踪分支的 Gerrit

转载 作者:太空狗 更新时间:2023-10-29 13:24:31 31 4
gpt4 key购买 nike

将更改推送到 Gerrit 需要相当深奥的命令

git push origin HEAD:refs/for/branchname

我们已经为此编写了脚本,但我正在寻找一种本地执行此操作的方法。借助 git 强大的配置,我似乎可以预先配置其中的大部分内容[1],这样就只有 git push 了。够了……差不多了。我卡在 remote.<name>.push 上了引用规范。

我已经可以创建一个tracking 主题分支,这样 git pull (没有其他参数)将从上游远程 pull 更改到我的主题分支。然而,对于 Gerrit,推送和获取 refspecs 是不一样的:一个是从 refs/heads/trackbranch 获取( merge ) , 但有人推到 refs/for/trackbranch [2]

我可以配置一个pushremote.<name>.push 中引用规范,但是语法非常基本:如果我把 push = refs/heads/*:refs/for/*

然后将尝试推送我的 t-foo主题分支到 refs/for/t-foo .但是 git 有 t-foo 的信息正在跟踪 trackbranch .我可以定义一个 refspec 以便 git 自动尝试推送任何 t-foo到它的refs/for/trackbranch

我们目前正在使用脚本来执行此操作,我想我可以为每个主题分支定义一个推送引用规范(可能通过更多脚本)。我希望有一种原生的 git 方式来执行此操作,这样我们的团队就不需要依赖更多自定义的内部脚本。

[1] 通过使用 git checkout origin/upstream_branch -b topic_branch 定义跟踪分支或在现有分支机构内 git branch --set-upstream-to origin/upstream_branch

[2] 推送到 refs/for/*创建一个变更集以供审查。具有适当的权限,可以推送到 refs/heads/*绕过审查,但这否定了 Gerrit 的大部分观点。

最佳答案

出于某种原因 :-) 我继续尝试编写一个脚本来设置 git config 条目,然后发现似乎无法直接获得所需的结果。

作为替代方案,我编写了一个推送到“gerrit 审查名称”的脚本(注意:我实际上没有使用 gerrit,所以这基本上是未经测试的,尽管我已经使用--dry-run 选项,看起来它做的是正确的事情——但我想你可能想要修改它)。当然,这在功能上可能与您自己的脚本相同。

无论如何,你可以有一个全局或系统范围的别名,git config alias.review 或类似的,运行脚本,这样你就可以说 git reviewgit review branch。别名就是 review = !sh/path/to/script(此时参数将自动传递)。

我把脚本放在这里:http://web.torek.net/torek/git/gerrit-review.sh.txt (.txt 扩展只是为了让浏览器默认查看它,而不是默认下载它)。

关于git - "git push"到带有跟踪分支的 Gerrit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21946814/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com