Comment puis-je améliorer les performances de CVS dans un scénario multi-site?
-
02-07-2019 - |
Question
Je travaille actuellement sur un projet avec des développeurs travaillant sur trois sites. L'un des sites est à Delhi, en Inde, tandis que les deux autres sont en Europe. La communication entre les bureaux européens et le bureau de Delhi a une bande passante médiocre et une latence assez mauvaise, et une mise à jour de CVS à partir de là prend souvent 5 à 10 minutes, même si seuls quelques fichiers ont été modifiés.
Existe-t-il de bons serveurs proxy CVS ou un moyen astucieux de garder des serveurs CVS distincts synchronisés? Avez-vous d'autres conseils pour améliorer les performances dans ce scénario?
Malheureusement, nous resterons coincés avec CVS ??pendant le déroulement de ce projet. Par conséquent, passer à quelque chose de complètement différent n’est pas une option à court terme.
La solution
Pourquoi ne pas changer d’option?
Je recommande fortement de passer à SVN ou à Git. Et que vous fassiez cette conversion au plus vite ... comme aujourd'hui:)
Il existe même des outils / guides svn et outils / guides git là-bas qui fera cette conversion CVS pour vous.
Personnellement, j'utilise et aime SVN pour mon travail, mais d'après votre description ci-dessus, il semble que git pourrait être la meilleure option pour vous.
Autres conseils
Voici ce que j'ai fait il y a longtemps dans des circonstances similaires, lorsque la bande passante et les réseaux peu fiables posaient problème:
- Faites une copie du référentiel et installez-le à l'emplacement distant. Vous savez avoir CVS1 et CVS2.
- Verrouillez l'une des deux copies (CVS1) en empêchant les validations. Ceci est réalisé en modifiant 'commitinfo' dans le module CVSROOT.
- CVS1 ne peut être utilisé que pour les mises à jour
- CVS2 peut être utilisé pour les mises à jour et les validations
Lorsque vous souhaitez autoriser la copie 1 dans la validation, procédez comme suit:
- Verrouiller CVS2
- Copiez CVS2 vers CVS1
- Déverrouiller CVS1
Cela semble lourd, et si vous le faites manuellement, cela fonctionne. Cela demande un peu de discipline si vous le faites manuellement. Les fuseaux horaires sont peut-être de votre côté pour une fois.
J'ai écrit un outil permettant de savoir qui avait le jeton de validation et de transférer automatiquement les référentiels d'un site à un autre via rsync et SSH. Cela a bien fonctionné pendant quelques années. Nous n'avons jamais perdu de données et le transfert du jeton d'un emplacement à un autre a pris environ 5 minutes.
L’outil de transfert a été écrit en perl et il m’a fallu environ deux semaines pour le développer et y travailler à plein temps.
Je sais qu'il y a longtemps que les développeurs FreeBSD utilisaient CVSup , mais je n'ai jamais utilisé cet outil moi-même.