vers - svn to gitlab




Souhaitez-vous migrer de CVS à svn ou directement à git ou hg? (4)

Je ne sais pas si c'est le bon forum à poser.

Mon entreprise utilise CVS comme système de contrôle de version. Nous prévoyons de passer à un système de contrôle de version plus moderne. Que recommanderiez-vous comme la solution la moins risquée?

Mon idée est d'utiliser Subversion mais j'entends aussi beaucoup de bonnes choses sur Git et Mercurial

Cependant, nous sommes une petite entreprise et nous n'avons pas besoin d'un système de contrôle de version distribué. Quels sont les avantages de Git ou Mercurial par rapport à Subversion, outre le fait qu'ils sont distribués?


  1. Fusionner le code et résoudre les conflits est plus facile en utilisant un VCS distribué comme GIT ou Mercurial. La raison en est que GIT ou mercurial ont tous les snapshots intermédiaires des deux "codes de fin" à fusionner tandis que subversion ne connaitrait l'instantané de fin que si chaque utilisateur SVN travaille dans sa propre branche.

  2. Avec un VCS distribué, vous n'êtes pas dépendant du réseau pour vérifier le code.

  3. Si vous avez un grand nombre d'utilisateurs qui vérifient des choses quotidiennement dans VCS, votre serveur SVN devrait être très puissant pour gérer les check-ins / outs simultanés. Les DVCS n'ont pas ce problème.

Nous avons fait notre passage de CVS à SVN et maintenant à Mercurial et nous sommes très heureux de la transition. Il n'y a rien à propos de SVN qui nous manque à Mercurial, mais revenir à SVN serait douloureux.


Les choses que SVN peut avoir d'important pour votre flux de travail:

  1. Caisses partielles.
    Peut juste vérifier une partie de l'arbre (important si vous avez plus d'un projet dans votre dépôt)

  2. Caisses mixtes.
    Des parties de votre caisse peuvent être à différentes révisions, jusqu'à un seul fichier.

  3. La révision globalement unique augmente de façon monotone.
    Il est facile de voir dans SVN que rev 1206 est plus tard que 1100 (cf, cfbb0827c67d est plus tard que d500c208c3c5?)

  4. De nombreux projets peuvent partager le même référentiel SVN.
    Si votre paquet contient plusieurs fichiers EXE, DLL et autres, dans Hg / Git land, vous pouvez utiliser plusieurs dépôts pour gérer cela. Cela peut compliquer un peu la manipulation des étiquettes / révisions


Edit: Super lien - http://whygitisbetterthanx.com/

============================================= ========

Oui, en fait, nous venons de passer de SVN à Mercurial.

Mis à part le côté distribué des choses Mercurial et GIT sont beaucoup plus rapides que SVN, et aussi le repo n'a pas de dossiers .SVN ennuyeux dans un dossier jamais. Sans parler de la fusion fonctionne beaucoup mieux! Le fait que tu puisses aussi stocker ton repo sur n'importe quel lecteur partagé est sympa (Pas besoin d'installer des trucs sur le serveur, pour Mercurial de toute façon)

Plus de lecture

Devrais-je utiliser SVN ou Git?

http://www.richappsconsulting.com/blog/blog-detail/svn-vs-git-who-will-be-the-future-of-revision-control/

http://thinkvitamin.com/code/why-you-should-switch-from-subversion-to-git/

http://techblog.floorplanner.com/2008/12/09/git-vs-svn-for-bosses/

Et enfin GIT Vs Mercurial

http://gitvsmercurial.com/ - Ce site semble être mort maintenant :(


Nous avons migré de CVS à Mercurial il y a environ deux semaines dans mon travail. Nous sommes une petite équipe de 6 personnes. Seulement deux avaient déjà travaillé avec autre chose que CVS avant la migration.

J'étais en charge du choix des nouveaux vcs. J'ai considéré Git et Mercurial.

Certains des chagrins que nous avons eu avec CVS ​​étaient de mauvaises possibilités de branchement, pas de support de renommer, un algorithme vraiment mauvais pour les conflits.

Je n'ai jamais considéré SVN, parce que chaque fois que j'ai essayé de l'utiliser avec des branches dans le passé, les fusions étaient toujours un mal de tête. Et franchement, tout le battage médiatique est pour dvcs ces jours-ci, et il doit y avoir une raison à ce sujet;)

Entre Git et Mercurial, c'est vraiment plus un choix personnel. Mon coeur est tombé pour Mercurial parce que je l'ai trouvé plus facile à apprendre que Git et moins "vraiment gros projet" orienté.

Avantages de Git / Mercurial sur SVN

  1. De meilleures branches et capacités de fusion (vraiment la raison la plus importante)
  2. Possibilités d'exporter / importer des correctifs dans des bundles, par e-mail, etc.
  3. N'a pas fait de tests approfondis à ce sujet, mais je pense que les deux sont plus rapides à bien des égards que SVN (fusionner, cloner, différer, etc.)
  4. Le développement est beaucoup plus actif, j'ai entendu l'équipe SVN essaie d'aller de l'avant, mais quand même.
  5. Très bonne infrastructure d'extensions
  6. Capacité de serveur Web livré, vraiment utile pour partager rapidement quelque chose par exemple.

Et même si vous disiez "outre le fait qu'ils sont distribués", je pense que c'est vraiment une fonctionnalité qui tue. DVCS permet des choses vraiment chouettes, cela peut ne pas sembler utile au début, mais une fois que vous les avez utilisées, vous ne pouvez pas vous en passer;)

Courbe d'apprentissage

Deux personnes de l'équipe n'étaient pas vraiment contentes du changement. Mais avec une petite explication de deux heures pour toute l'équipe avec quelques diapositives, tout s'est bien passé.

Bien sûr, ils me posent parfois une question, mais nous n'avons eu aucun problème réel depuis la migration. Juste un peu de malentendu sur la façon de fusionner les changements tirés dans le répertoire de travail. Rien qui n'a pas été résolu en quelques minutes.

Je pense pouvoir dire qu'en deux semaines environ, tout le monde est au moins aussi productif qu'avant et confiant avec le nouvel outil. Et maintenant nous pouvons utiliser les fonctionnalités des branches sans crainte pour la fusion à venir :)

Migration de CVS vers mercurial

https://www.mercurial-scm.org/wiki/RepositoryConversion#CVS

Différentes méthodes sont listées sur le wiki officiel concernant la migration de CVS vers Mercurial. J'ai testé l'extension Convert et cvs2hg qui a finalement été utilisé.

L'extension Tailor, hg-cvs-import, fromcvs semble être un ancien code et n'est plus maintenue.

L'extension Convert fonctionne très bien sur un référentiel simple, mais comme notre dépôt CVS était très grand et qu'il y avait des branches vraiment étranges, l'extension n'était pas capable d'importer correctement tout l'historique. La tête était correcte, mais certaines branches manquaient.

Donc le dernier choix est cvs2hg . En fait, c'est un nouveau backend pour cvs2svn, qui se convertit en Mercurial au lieu de Subersion.

L'approche 'Quick start' présentée dans le Readme a fonctionné hors de la boîte avec toutes les branches. Mais finalement, j'ai utilisé le fichier d'option pour ajouter un mappage d'utilisateur et élaguer certains commit buggy ou branches indésirables.

Le fichier d'options fourni avec les fichiers est bien commenté, il ne vous sera pas difficile de le configurer comme il vous convient.

Pour information, après la conversion initiale, j'ai utilisé l'extension Convert pour faire une extraction de sous-projet du référentiel Mercurial résultant vers un autre référentiel Mercurial, comme expliqué ici .





mercurial