2017-08-14 589 views
0

我們創建了很多標籤,然後才發現可以用斜槓命名git標籤,以便將它們排列在文件夾結構中。現在真的很難擺脫錯誤標記,因爲雖然我刪除了服務器上錯誤標記的標記,但是突然沒有在本地刪除標記的人推送所有標記,然後舊的和新的標記再次在服務器上。如何阻止用戶推送所有標籤(git push --tags)?

我們使用SourceTree作爲git客戶端(是的,我一直在確保每個人都沒有選中「推送所有標籤」複選框,但新人到達並且計算機被替換)和Visual Studio Team Services Git回購。

我希望每個人都能夠單獨創建和推送標籤,我只想避免那些批量推送標籤。

我已閱讀此帖子git pre-push hook, don't run if is --tags但該解決方案似乎無法在Windows中使用。

+0

'我一直在周圍,並確保每個人都沒有選中「推送所有標籤」複選框 - 也許你應該去周圍,並要求人們刪除過時的標籤。但他們真的很煩人嗎?在存儲庫中使用一些舊標籤有什麼大不了的地方? – Chris

+0

的確,我可以做到這一點,但這意味着我沒有時間真正做到。而且它可能會在後來以錯誤格式潛入新標籤中,這將需要重命名/刪除。好吧,我想我們可以和他們一起生活,但我認爲我們大多數人喜歡整潔,當他們在SourceTree中很好地結構化時,更容易導航到舊標籤。 –

+0

瞭解如何在託管資源庫上設置規則,以防止推送與特定模式匹配的參考。我們遇到了同樣的問題,無論我們輪到多少次,它只花了1個流浪的開發人員,而這個開發人員沒有注意到,每個人都再次貼上了標籤。最後,我推出了正確的標籤列表,並阻止人們將'refs/tags/*'推送到我們的服務器,這最終導致了停止。 –

回答

0

不管是git鉤子還是其他腳本,它們都需要在本地機器上單獨運行。所以我會建議帶遙控器的同步標籤,然後開發者在本地機器上創建自己的標籤

其實它只是需要爲每個本地計算機上執行一次,所以開發商只需要下面的命令運行(刪除本地的標籤,並從遠程的所有標籤)的工作在他們的機器上:

git tag -l | xargs git tag -d 
git fetch --tags 

然後開發人員可以在自己的本地倉庫上工作,甚至在下推送所有在SourceTree中選擇的標籤選項將不會影響您刪除的舊標籤。

另外,當server side hooks will available in future for VSTS時,還可以使用推後掛鉤來檢查刪除的標籤是否再次被推送到遠程。如果是,請停止推送您在推後掛鉤中指定的特定標籤。

+0

是的,可惜這似乎是唯一的選擇。我認爲我完全是這樣做的,但不知怎的,一個開發人員無論如何都有舊的標籤,並推動他們......直到Team Services有更多可用的git鉤子,我纔會繼續教育和管理。 –