2012-09-21 5 views
8

Das mag eine sehr dumme Idee sein oder nicht, aber wie kann man ein Git-Repository so konfigurieren, dass jeder Pull-Vorgang automatisch die Tags auch aus dem anderen Repository holt?Wie können Sie git so konfigurieren, dass die Tags bei jedem Pull automatisch abgerufen werden?

Nach the docs, es sieht aus wie Sie dies auf einer per Fern reposistory Basis tun können:

Fernbedienung. <Name> .Tagopt
Wenn Sie diesen Wert auf --no-tags setzen, wird automatisch beim Abrufen aus der Ferne deaktiviert <Name>. Wenn Sie auf --tags setzen, wird jedes Tag von der Remote-Adresse < mit dem Namen > abgerufen, auch wenn sie nicht von entfernten Zweigstellen erreichbar sind. Wenn Sie diese Flags direkt an an git-fetch (1) übergeben, kann diese Einstellung überschrieben werden. Siehe Optionen --tags und --no-Tags von git-fetch (1).

Gibt es eine Möglichkeit, --tags das Standard-Flag für jeden Abruf holen?

Antwort

5

Das Abrufen von Tags hat einen anderen Effekt als das Abrufen von Commits (git fetch), wie in "Does “git fetch --tags” include “git fetch”?" erläutert.

Letzteres aktualisiert Zweigstellen und holt tatsächlich die Tags, die von diesen aktualisierten Zweigen erreichbar sind.
Ersteres ruft alle Tags ab, aktualisiert jedoch nicht die Zweigstellen.

Wenn also Ihre Tags aus den Abzweigungen, die Sie abrufen, erreichbar sind, müssen Sie --tags nicht standardmäßig einschließen.

die große Geschichte einiger repos In Anbetracht (einschließlich der linux one), immer all Tags holen zu wollen Tag-Liste cluttering führen könnte (eine Liste von Tag Pollutted von Hunderten von nicht benötigten Tags).


Beachten Sie, dass Start-git 1,9/2,0 (Q1 2014), git fetch --tags alles holen wird (wie git fetch) sowie die Tags. Siehe "Does “git fetch --tags” include “git fetch”?".

anfordern, dass alle Tags aus den entfernten zusätzlich abgerufen werden, was auch immer sonst geholt zu sein.

So können Sie versuchen, die remote.<name>.tagOpt config option:

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

es --tags Einstellung wird jeden Tag von Fern <name> holen, auch wenn sie von entfernten Zweig Köpfe nicht erreichbar sind.

+0

Fetching-Tags nicht der Standard ist, so klar Linus denkt, dass es eine schlechte Idee ist.Meine Gruppe ist jedoch an BitKeeper gewöhnt und sie vergessen häufig, Tags zu holen, wenn sie _should_ (d. H. Tags freigeben) sollten. Sie können Tags löschen, wenn das nutzlose Tag-Volume lächerlich wird. –

+0

@RossRogers Aber wenn sie die Freigabe Zweige holen, würden sie auch die Tags bekommen. – VonC

+0

Das Standardverhalten ist das Abrufen von unserem Git Stamm (ja, wir haben einen Stamm, obwohl die Leute ziehen und voneinander schieben können). Dieser Stamm ist in einem internen Werkzeug ähnlich wie [Jenkins] (http://jenkins-ci.org/) verpackt, das die Edits nur integriert, nachdem es eine Reihe von Tests bestanden hat. Wie auch immer, sie ziehen normalerweise nicht von internen "Releases", gegen die mehr Regressionen ausgeführt werden. Sie ziehen normalerweise von der Spitze des Rumpfes, weil sie durch Regressionen sehr gut geschützt sind. Wir möchten, dass sie die Tags immer mit einem Befehl erfassen, weshalb ich diese Frage gestellt habe. –

3

Genau dies auf die Config der Fernbedienung hinzufügen:

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

eine Option, dies global zu tun? nicht nur für spezifiziertes Repository. – zx1986

Verwandte Themen