2016-06-21 1 views
3

Je sais que les notes git peuvent être récupérés après le clonage en utilisant:Fetch notes git lors du clonage

git fetch origin refs/notes/*:refs/notes/* 

ou même être configuré dans la configuration git pour être toujours tiré par les cheveux. Cependant, au moment du clonage, je ne reçois pas les notes, donc je dois cloner puis aller chercher. Bien que je vois cela en utilisant --mirror lorsque le clonage obtient des notes aussi. Cependant, ma configuration optimale serait que je puisse cloner n'importe quel dépôt sans faire de miroir (puisqu'il implique --bare et obtiendrait aussi d'autres références indésirables) et obtenir les notes aussi.

Existe-t-il un moyen de configurer par exemple git config pour récupérer des références supplémentaires spécifiques au moment du clonage?

Répondre

1

La réponse est « non »: au moment de clone, vous avez le choix soit le clonage avec le refspec par défaut (+refs/heads/*:refs/remotes/$remote/*, où $remote est remplacé par origin ou le nom à distance que vous sélectionnez) ou avec le --mirror fetch-miroir refspec (+refs/*:refs/*). Comme vous le notez, --mirror implique --bare, et n'est probablement pas souhaitable ici.

Il serait assez facile d'écrire un script shell qui fait un clone, puis git config --add remote.origin.fetch +refs/notes/*:refs/notes/*, puis exécute git fetch, de sorte que vous n'avez pas besoin d'exécuter trois commandes vous-même. (Que vous vouliez le + ici, et/ou renommer leurs notes à un autre nom de référence, c'est à vous de choisir.) Pour le référentiel FreeBSD, j'utilise fetch = +refs/notes/*:refs/notes/origin/* et j'ai défini notesRef = refs/notes/origin/commits, une pratique que j'ai copiée ailleurs sans trop y penser. -et jusqu'à présent je n'ai eu aucune raison de le repenser ou de le changer.)