簡體   English   中英

git 子樹是否與 Gerrit 兼容?

[英]Is git subtree compatible with Gerrit?

我們的 git 存儲庫托管在 Gerrit 中。 一位同事維護 2 個 repos mainsub 他想在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

到目前為止我們想到的解決方法:

  1. 使用 Google 的 REPO 工具來管理 2 個 repos,就像它為 AOSP 所做的那樣,這需要額外的技能並且有點矯枉過正。

  2. 使用git submodule ,比較麻煩。

  3. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM