2009-11-24 10 views
10

Dans son 2005 email to the Linux Kernel mailing list, Linus Torvalds est très emphatique que les balises dans git devraient être privées et ne sont pas automatiquement inclus lors de la récupération des autres:Tags Git global --- évidemment mauvais, mais pourquoi?

Tirer une tête régulière ne peut pas et doitpas balises de mise à jour . Mots-clés ne sont pas associés à l'arbre, et ils ne peuvent pas et doitpas être, exactement parce que cela les rendrait global au lieu de privé, et il serait faire fondamentalement les pas distribués

et:

Il est faux, faux, faux de penser que quelqu'un aller chercher l'arbre elses moyens que vous devriez aller chercher ses tags.

Je ne suis pas un hacker kernal. L'une des raisons pour lesquelles j'utilise git est de pouvoir éditer mon propre code depuis différents endroits. Les balises semblent être un moyen naturel de décrire différentes versions pour référence future, par ex. qu'est-ce qui fonctionne, qu'est-ce qui ne fonctionne pas, quelles bizarreries existent. Donc, pour moi, il semblerait utile d'avoir des balises persistantes entre les récupérations. Quelqu'un peut-il expliquer quel est le danger de ce paradigme?

Pourquoi les balises privées sont-elles si importantes? Et quelle est l'alternative? Dois-je simplement créer une branche distincte chaque fois que je souhaite signaler une version particulière du code?

+0

Notez que seul le défaut; les tags ne sont pas poussés car par défaut git push ** matching **. Lorsque vous récupérez des balises git ** autofolows ** (c'est-à-dire que vous les récupérez lors de la récupération des validations, elles pointent vers). Vous pouvez toujours configurer git pour pousser/récupérer toutes les balises. –

Répondre

6

Le mot-clé est "pas automatiquement inclus." Vous pouvez pousser et tirer des tags, il vous suffit de le spécifier dans vos commandes push/pull. Essayez git push --tags.

(En fait, les balises sont automatiquement ces jours-ci a tiré, mais pousse doit être explicite.)

+1

En fait, les balises sont ** autofollowed ** sur fetch par défaut, ce qui signifie que git chercherait les balises qui pointent vers les commits récupérés. –

+1

Les balises ne sont pas automatiquement incluses lors du push, car par défaut git pousse ** refs ** correspondant (et par définition les nouvelles balises ne seraient pas présentes sur le côté distant, donc ne correspondraient pas). –

6

Je ne sais pas, mais les balises sont effectivement récupérées ces jours-ci, et cela a été la valeur par défaut pendant une période assez longue. Le libellé dans les parties que vous citez me semble confus quand je le vois avec la terminologie git d'aujourd'hui, donc j'oserais prétendre que la déclaration de Linus est obsolète.

Questions connexes