2012-09-21 10 views
8

這可能也可能不是一個非常愚蠢的想法,但是如何配置一個git存儲庫,以便任何已完成的拉動操作都可以自動從其他存儲庫獲取標籤?如何將git配置爲在每次拉動時自動獲取標籤?

the docs,它看起來像你可以做到這一點每個遠程reposistory基礎上:

遙控器。 <名稱> .tagopt
將此值設置爲--no-tags禁用 從遠程<名稱>獲取時自動標記。將 - 設置爲 - 標籤將從遠程<名稱>中獲取每個標籤,即使它們不是從遠程分支機構不可到達的 。直接將這些標誌 傳遞給git-fetch(1)可以覆蓋此設置。請參閱options --tags和 - git-fetch(1)的無標籤。

有沒有辦法讓--tags獲取每個提取的默認標誌?

回答

5

如「Does 「git fetch --tags」 include 「git fetch」?」中所述,提取標記與提取提交(git fetch)的效果不同。

後者將更新分支頭,並且實際上將獲取從那些更新的分支可到達的標籤。
前者將獲取所有標籤,但不會更新分支頭。

因此,如果您的代碼可以從您正在提取的分支中重新獲取,則默認情況下不需要包含--tags

考慮到大歷史上的一些回購(包括linux one)的,總是想獲取所有標籤可能導致標籤列表雜亂(數以百計的不需要的標籤pollutted標籤的列表)。


需要注意的是啓動git的1.9/2.0(2014年第一季度),git fetch --tags將獲取的一切(如git fetch),加上標籤。請參閱「Does 「git fetch --tags」 include 「git fetch」?」。

要求所有標籤都從遠程中取出,除了取出的其他東西

所以,你可以嘗試remote.<name>.tagOpt config option

git config (--global) remote.<name>.tagOpt --tags 

將其設置爲--tags將每一個標籤從遠程<name>取,即使他們不能從遠程分支機構負責人到達。

+0

抓取標籤是不是默認的,所以顯然林納斯認爲這是一個壞主意。但是,我的團隊習慣於BitKeeper,他們經常忘記在應用程序_should_(即發佈標籤)時獲取標籤。如果無用的卷標變得荒謬,您可以刪除標籤。 –

+0

@RossRogers但是,如果他們正在獲取發佈分支,他們也​​會得到標籤。 – VonC

+0

默認行爲是從我們的git主幹中獲取(是的,我們有一個主幹,儘管人們可以互相拉動和推動)。這個樹幹被封裝在類似於[Jenkins](http://jenkins-ci.org/)的內部工具中,該工具僅在通過一系列測試後纔將這些編輯整合在一起。 總而言之,他們通常不會從內部「發行版」中獲取更多回歸版本。它們通常從軀幹的尖端拉出,因爲它很好地被迴歸保護。我們希望他們總是用一個命令抓住標籤,這就是我問這個問題的原因。 –

3

只需添加到您的遙控器的配置:

fetch = +refs/tags/*:refs/tags/* 
+1

任何選項在全球都可以做到這一點?不只是指定存儲庫。 – zx1986

相關問題