195 votes

Peut-on définir une valeur par défaut de Git pour récupérer toutes les balises lors d'une extraction à distance ?

J'ai actuellement une configuration git à distance comme suit :

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*

Quand j'émets git pull sur la branche master, toutes les têtes distantes sont récupérées dans remotes/upstream, puis remotes/upstream/master est fusionné dans master. Tous les tags qui peuvent être atteints sont aussi récupérés en même temps, ce qui est très pratique.

J'aimerais git pull pour aller chercher en plus todo à partir de la télécommande, et pas seulement celles qui sont directement accessibles à partir des têtes. J'ai d'abord essayé de définir tagopt == --tags mais il s'est avéré que cela ne permettait de récupérer que les balises, ce qui a tout cassé. (Junio dit même que c'est un horrible erreur de configuration ).

Y a-t-il un moyen de faire git pull récupérer par défaut toutes les balises distantes, en plus des têtes distantes ?

3 votes

Un rappel à moi-même : Assurez-vous que vous avez effectivement poussé la balise en premier (cela ne fonctionne pas automatiquement) : git push origin <tag_name>

0 votes

Utilisation tagopt n'est plus une mauvaise configuration ; à partir de 1.9/2.0 (Q1 2014) ceci permettra de récupérer tous les tags en plus à ce qui est normalement recherché.

11voto

jan groth Points 5071

Aucune des réponses n'a fonctionné pour moi quand les balises distantes ont été supprimées - leurs équivalents locaux existeraient toujours dans le repo de récupération et d'extraction.

J'ai trouvé cette combinaison de git fetch les attributs sont le seul moyen de repérer les balises supprimées :

git fetch --tags --prune --prune-tags

Alternativement, ceci peut être appliqué à la configuration locale (ou globale) de git :

...
[remote "origin"]
    url = [gitlab url]
    fetch = +refs/heads/*:refs/remotes/origin/*
    tagopt = --tags
    prune = true
    pruneTags = true
...

Bel effet secondaire : Cela fonctionnera aussi pour git pull (Je n'ai pas réussi à obtenir cela via les attributs de la ligne de commande).

Commandes pour ajouter une configuration :

git config (--global) remote.origin.tagopt --tags
git config (--global) remote.origin.prune true
git config (--global) remote.origin.pruneTags true

0 votes

Oui, je m'en rends compte. C'est aussi le contraire de ce que demande la question. Mais quoi qu'il en soit, vous devriez peut-être l'expliquer en gras au début de votre réponse.

2voto

event Points 99

J'utilise ceci avec magit sur kernel.org

[remote "upstream"]
    url = <redacted>
    fetch = +refs/heads/*:refs/remotes/upstream/*
    tagOpt = --tags

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X