2012-09-21 11 views
8

To może być lub może nie być bardzo głupi pomysł, ale jak skonfigurować repozytorium git tak, aby każde wyciągnięcie automatycznie pobierało tagi również z innego repozytorium?Jak skonfigurować git, aby automatycznie pobierał tagi przy każdym pobraniu?

Według the docs, wygląda na to można to zrobić na zasadzie per zdalnego reposistory:

pilota. <nazwa> .tagopt
Ustawienie tej wartości na --no-tags wyłącza następujące po automatycznym tagu podczas pobierania ze zdalnego <nazwa>. Ustawienie tego parametru na --tags spowoduje pobranie każdego tagu ze zdalnego <name>, nawet jeśli nie są one osiągalne z odległych głowic oddziału. Przekazywanie tych flag bezpośrednio do git-fetch (1) może zastąpić to ustawienie. Zobacz opcje --tagi i --no-tags z git-fetch (1).

Czy istnieje sposób, aby ustawić --tags domyślną flagę do pobrania dla każdego pobrania?

Odpowiedz

5

Pobieranie znaczników ma inny efekt niż pobieranie zatwierdzeń (git fetch), jak wyjaśniono w "Does “git fetch --tags” include “git fetch”?".

Ten ostatni zaktualizuje nagłówki gałęzi i faktycznie pobierze znaczniki dostępne z tych zaktualizowanych gałęzi.
Pierwszy z nich pobierze wszystkie znaczniki, ale nie zaktualizuje głowic gałęzi.

Jeśli znaczniki można ponownie pobierać z pobieranych gałęzi, nie trzeba domyślnie włączać --tags.

Biorąc pod uwagę dużą historię niektórych repo (w tym linux one), zawsze chcąc sprowadzić wszystko tagów mogą prowadzić do listy tag zaśmiecania (wykaz tagu pollutted przez setki nie-potrzebnych tagów).


Należy zauważyć, że rozpoczynając git 1.9/2.0 (Q1 2014), git fetch --tags pobierze wszystko (jak git fetch), plus znaczniki. Zobacz "Does “git fetch --tags” include “git fetch”?".

Prośba że wszystkie tagi zostać pobrane ze zdalnego oprócz cokolwiek innego to jest naciągane.

Więc można spróbować remote.<name>.tagOpt config option:

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

Ustawienie na --tags pobierze każdy tag ze zdalnym <name>, nawet jeśli nie są one dostępne z odległych głowach branży.

+0

pobierania tagi nie jest domyślna, więc wyraźnie Linus uważa, że ​​to zły pomysł.Jednak moja grupa jest przyzwyczajona do BitKeepera i często zapominają pobrać znaczniki, kiedy _długo_ (to znaczy zwalniają znaczniki). Możesz usuwać tagi w przypadku, gdy bezużyteczny tag volume stanie się śmieszny. –

+0

@RossRogers Ale jeśli pobierają gałęzie wydania, oni również otrzymają tagi. – VonC

+0

Domyślnym zachowaniem jest pobieranie z naszego bagażnika git (tak, mamy tułów, chociaż ludzie mogą ciągnąć i odsuwać się od siebie). Ten bagażnik jest zamknięty w wewnętrznym narzędziu podobnym do [Jenkins] (http://jenkins-ci.org/), które integruje zmiany tylko po przejściu kilku testów. W każdym razie normalnie nie można ich wyciągnąć z wewnętrznych "wydań", przeciwko którym jest uruchamianych więcej regresji. Zazwyczaj ciągną od końca pnia, ponieważ jest bardzo dobrze strzeżony przez regresje. Chcemy, aby zawsze chwytali tagi jednym poleceniem, dlatego zadałem to pytanie. –

3

Wystarczy dodać to do konfiguracji swojego pilota:

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

jakakolwiek opcja, aby zrobić to globalnie? nie tylko do określania repozytorium. – zx1986

Powiązane problemy