173 votes

Comment mettre à jour un clone git --mirror ?

J'ai créé un dépôt git pour refléter un site en direct (qui est un dépôt git non nu) :

git clone --mirror ssh://user@example.com/path/to/repo

Maintenant, pour maintenir ce clone miroir à jour avec toutes les modifications de son origine distante, quelle(s) commande(s) dois-je utiliser ?

J'aimerais que tout soit mis à jour : commits, refs, hooks, branches, etc.

Gracias.

258voto

ralphtheninja Points 24346

C'est la commande que vous devez exécuter sur le miroir :

git remote update

0 votes

@Magnus Skog : Super. Merci. Est-ce tout ? Ai-je besoin d'une autre commande, comme git fetch ? Ou git remote update seul va tout faire ?

11 votes

J'aimerais aussi savoir quelle est la différence avec git fetch.

1 votes

@Thorbjörn (vous devrez faire avec un ö suédois :)) : Git fetch met juste à jour votre dépôt avec les références distantes depuis la télécommande. Cette commande met à jour tout sur le référentiel miroir.

9voto

J. Bruni Points 7500

Concernant les commits, les refs, les branches et les " et cetera "La réponse de Magnus fonctionne ( git remote update ).

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

J'ai trouvé ce fil de discussion très intéressant sur le clonage/mirrorage 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 .git/description qui n'est pas cloné, tout comme les crochets.

  • Les crochets par défaut qui apparaissent dans le hooks dir provient de la TEMPLATE_DIR

  • Il y a cet intéressant template sur git.

Donc, je peux soit ignorer cette histoire de "cloner les crochets", soit opter pour un rsync stratégie, étant donné les buts de mon miroir (sauvegarde + source pour d'autres clones, seulement).

Eh bien... Je vais juste oublier le clonage des crochets, et m'en tenir à la git remote update manière.

  • Sehe vient de faire remarquer que non seulement les "crochets" ne sont pas gérés par la clone / update processus, mais aussi les stashs, 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 réserves, etc. remote update .

Merci. J'ai amélioré un peu mon propre "git-fu"... :-)

5voto

sehe Points 123151

Voir ici : Git ne clone pas toutes les branches sur les clones suivants ?

Si vous voulez vraiment cela en tirant des branches au lieu de push --mirror vous pouvez y jeter un coup d'œil ici :

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

Cette réponse fournit des étapes détaillées sur la façon d'y parvenir relativement facilement :

1 votes

push n'est pas une option pour moi car je dois le faire du côté de la réception (d'où se trouve le clone) ; pull n'est pas non plus une option car un dépôt miroir est un dépôt nu (pas d'arbre de travail, donc pas de "pull") - il semble que git remote update fait en effet tout (bien plus simple que la réponse référencée)... Quoi qu'il en soit, merci ! Il y a certainement des informations précieuses dans les questions/réponses liées.

1 votes

Ok, je voulais dire tirer comme dans le langage habituel. Technologie de poussée et de traction. Il n'y a guère d'autre mot que le non-sens "obtenir les données à partir d'une distance activement au client" qui ne doublerait pas un mot qui a une signification pour git ou les systèmes DVCS :) Le deuxième lien vous fournira les détails que vous souhaitez. Notez que "git remote update" n'a pas d'effet sur le processus de mise à jour. no maintient en fait le statut de "miroir" sans les opérations supplémentaires mentionnées ici.

1 votes

Hmm... désolé (HTH) - il semble qu'un miroir "absolu" soit plus facilement réalisable par un simple "rsync" du dossier repo d'origine... ce n'est pas ce que je voulais, mais... je viens de faire quelques tests... et rien ne semble copier les hooks - ce qui m'intéresse particulièrement...

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