[英]Is git subtree compatible with Gerrit?
我們的 git 存儲庫托管在 Gerrit 中。 一位同事維護 2 個 repos main
和sub
。 他想在main
中包含sub
作為子樹。 到目前為止,這是我們嘗試過的:
git clone repo_url_main -b dev main
cd main
git subtree add -P foo/bar repo_url_sub master
touch foo/bar/baz.txt
git add .
git commit -m 'foo.bar.baz.tt'
git subtree push -P foo/bar repo_url_sub master
第一個問題是git subtree push
失敗,因為他的賬戶沒有權限直接推送未經審查的提交。 審查是他想要的。
對於非子樹存儲庫,我們使用git push origin HEAD:refs/for/master
創建審查更改。 所以我們嘗試git subtree push -P foo/bar repo_url_sub master:refs/for/master
也失敗了。 Git 抱怨master:refs/for/master
不是有效的參考。 我在手冊中找到git subtree push -P <prefix> <repository> <ref>
。 最后一部分是ref
而不是refspec
。 所以這里不需要master:refs/for/master
。
然后我們嘗試git subtree push -P foo/bar repo_url_sub refs/for/master
。 推送成功,但結果不是預期的。 創建分支refs/for/master
而不是審查更改。 經過幾次嘗試,我們發現似乎無論最后一個 ref 是什么,它總是擴展為refs/heads/...
。 甚至refs/heads/master
也擴展為refs/heads/refs/heads/master
。
到目前為止我們想到的解決方法:
使用 Google 的 REPO 工具來管理 2 個 repos,就像它為 AOSP 所做的那樣,這需要額外的技能並且有點矯枉過正。
使用git submodule
,比較麻煩。
在main
中包含一個本地傳輸sub
存儲庫作為子樹。 首先git subtree push
在 transfer repo 中更新master
,然后在 transfer repo 中使用git push repo_url_sub HEAD:refs/for/master
來創建review更改。 但是我們可以預見當涉及到許多維護者時會出現混亂。
是否有任何 git 選項或配置可以指示git subtree push
以在 Gerrit 中正確創建審核更改? 感謝您的任何想法。
因此,使用“git help subtree”:
推
使用提供的進行拆分,然后執行 git 推送以將結果推送到存儲庫並參考
所以我認為您可以先執行“git subtree split”,然后執行“git push”,例如:
git subtree split --prefix=foo/bar -b split
git push repo_url_sub split:refs/for/master
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.