2014-07-18 88 views
2

我們的項目中有幾個子模塊。所以我們假設一位開發人員實現了一個新功能,該功能會影響這些子模塊中的幾個,並上傳他對所有相同主題的gerrit補丁集的更改。通過主題獲取gerrit補丁集(針對多個存儲庫)

所以,當我想下載他的變化,我可以從gerrit web界面下載鏈接。但是我必須爲每個子模塊執行此操作。

是否有一種簡單的方法通過主題名稱自動獲取補丁集?
類似於git fetch origin refs/changes/*topicname*?或者我將不得不使用gerrit REST API?

回答

3

我爲此寫了一個小腳本 - 比我想象的要容易。
這裏是做什麼的:

  • 通過格里特查詢獲得所需的補丁集,這樣的:
    ssh -p 29418 myserver gerrit query --patch-sets topic:mytopic AND project:myproject
  • 作爲格里特將輸出大量的每個色塊組數據,我們以「grep」可以和「sed的」這是輸出一點點:
    grep ref: | sed s%\ \ \ \ ref:\ %%
    所以我們得到裁判的一個不錯的列表來獲取
  • 我們可以使用與xargs的xargs -r -n 1 get_n_tag_patchset.sh
  • 這個輸出,其中我get_n_tag_patchset.sh看起來是這樣的: ssh -p 29418 myserver gerrit query --patch-sets topic:mytopic AND project:myproject | grep ref: | sed s%\ \ \ \ ref:\ %% | xargs -r -n 1 get_n_tag_patchset.sh

    所以我結束了所有的補丁集所需的主題在我的本地回購,每一個:git fetch --recurse-submodules=no origin $1
    git tag -f $1 FETCH_HEAD

我在一個命令行中的前三個點合併在一起標記。
對於我的所有子模塊(其中'myproject'必須被替換以匹配子模塊,當然)「將執行此操作。 :-)

+0

只是萬一有人想知道:標籤可以很容易地被刪除:'git tag -l refs/changes/* | xargs -n 1 git tag -d' – Roman

1

latest GitMinutes episode(2014年7月)提到,和盧卡Milanesio,一位經驗豐富的格里特貢獻者,詳細介紹其在its blog post

與即將舉行的支持多倉庫的格里特原子提交,將有可能爲單個主題同時合併多個存儲庫中的多個更改。
此功能尚未準備就緒,但希望在不久的將來有所發展,Google Gerrit團隊的開發人員和貢獻者正在努力。

雖然這還沒有in Gerrit 2.9

+0

謝謝你,這裏是個好消息。這似乎成爲一個很酷的功能。希望我們將設法解決這個問題,直到它可用... – Roman

+0

有沒有人聽說過有關此功能的任何進展?實際上除了上面提到的GitMinutes之外,我找不到任何關於它的東西。 – Roman

+0

@Roman很好的問題。我沒有聽說過任何我自己。 – VonC