Comment déplacer les dépôts Git et de minimiser les temps d'arrêt
Question
Je déplacerai dépôts Git à partir d'un serveur SCM ancien à un nouveau. Ma principale préoccupation (autre que la fidélité, bien sûr) est de minimiser les temps d'arrêt. Voici mon plan:
- Sur la nouvelle machine, chaque clone référentiel à l'aide
git clone --mirror
- Copie sur des crochets de prise en pension pour chaque dépôt
- interdire l'accès aux vieux serveur (nous utilisons gitosis, donc supprimer l'accès pour tous les utilisateurs à l'exception du nouveau serveur)
- Déplacer l'entrée DNS afin de l'alias DNS utilisateurs Git utiliser
- Effectuer
git pull
pour chaque dépôt sur le nouveau serveur. - Pour chaque dépôt sur le nouveau serveur, modifiez le fichier de configuration pour supprimer la section
remote "origin"
. - Activer l'accès au nouveau serveur
Questions:
- Est-ce correct? Je suis particulièrement préoccupé par l'étape 6.
- Est-il possible de le faire qui permettra de réduire les temps d'arrêt?
Merci.
La solution
Je voudrais (s'il n'y a pas de communication possible entre l'ancien serveur et nouveau serveur):
- en utilisant
git bundle
- copier le paquet sur le nouveau serveur
- créer repo nus
-
git fetch
de ces faisceaux dans chacun des repo nu vide (pas d'origine pour définir) - Copie vol stationnaire crochets
- à interdire l'accès ancien serveur
- faire un dernier paquet git sur chaque repo (paquet supplémentaire, très rapide)
- copier ces petits paquets
-
git fetch
l'incrément des petits paquets supplémentaires
- rétablir l'accès
En cas de communication possible (par SSL) entre le nouveau et l'ancien serveur:
- Je voudrais créer une « migration » spécial gitosis utilisateur, avec accès à tous les projets
-
clone --bare
chaque projet sur le nouveau serveur - Copie vol stationnaire crochets
- à interdire l'accès ancien serveur
- un dernier
git fetch
sur chaque repo cloné - supprimer origine
- rétablir l'accès
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow