web-dev-qa-db-fra.com

Comment mettre à jour un git clone --mirror?

J'ai créé un référentiel git pour mettre en miroir un site actif (qui est un référentiel non-nu):

git clone --mirror ssh://[email protected]/path/to/repo

Maintenant, pour garder ce clone miroir à jour avec toutes les modifications de son origine distante, quelle commande ou quelles commandes dois-je utiliser?

J'aimerais que tout soit mis à jour: commits, références, crochets, branches, etc.

Merci!

129
J. Bruni

Voici la commande que vous devez exécuter sur le miroir:

git remote update
195
ralphtheninja

En ce qui concerne les commits, les références, les branches et " et cetera ", la réponse de Magnus ne fonctionne que (git remote update).

Mais malheureusement, il n'y a aucun moyen de clone/miroir/update les crochets , comme je le voulais ...

J'ai trouvé ce fil très intéressant sur le clonage/duplication des crochets:

http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread

J'ai appris:

  • Les crochets ne sont pas considérés comme faisant partie du contenu du référentiel.

  • Il y a plus de données, comme le dossier .git/description, qui ne sont pas clonées, tout comme les crochets.

  • Les hooks par défaut qui apparaissent dans le répertoire hooks proviennent du répertoire TEMPLATE_DIR

  • Il y a cette intéressante fonctionnalité template sur git.

Donc, je peux soit ignorer cette "chose du clone des crochets", soit opter pour une stratégie rsync, étant donné les objectifs de mon miroir (sauvegarde + source pour les autres clones uniquement).

Eh bien ... je vais simplement oublier le clonage des crochets et m'en tenir à la méthode git remote update.

  • Sehe vient de souligner que non seulement les "points d'ancrage" ne sont pas gérés par le processus clone/update, mais aussi les caches, les rerere, etc. Donc, pour une sauvegarde stricte, rsync ou équivalent serait vraiment la voie à suivre. Comme ce n'est pas vraiment nécessaire dans mon cas (je peux me permettre de ne pas avoir de crochets, de caches, etc.), comme je l'ai dit, je vais m'en tenir au remote update.

Merci! Amélioré un peu de mon propre "git-fu" ... :-)

7
J. Bruni

Voir ici: Git ne clone pas toutes les branches des clones ultérieurs?

Si vous le souhaitez vraiment en tirant des branches au lieu de Push --mirror, vous pouvez jeter un oeil ici:

"fetch --all" dans un dépôt git bare ne synchronise pas les branches locales avec celles distantes

Cette réponse explique en détail comment y parvenir relativement facilement:

4
sehe