web-dev-qa-db-fra.com

Git vs Mercurial vs SVN

Doublons possibles:
Pour les projets domestiques, Mercurial ou Git (ou d'autres DVCS) peuvent-ils offrir plus d'avantages que Subversion?
Quelles sont les forces et les faiblesses relatives de Git, Mercurial et Bazaar?

Quelles sont certaines des différences entre ces systèmes de contrôle de source? Lequel est le meilleur pour un petit projet de 2 personnes?

43
Yaso

SVN est différent de Git et Mercurial, car il s'agit d'un référentiel unique que tous les utilisateurs doivent extraire et valider.

Git et Mercurial ont un modèle distribué. Cela signifie qu'il existe un référentiel sur chaque ordinateur et qu'il existe généralement un référentiel "officiel" dans lequel les utilisateurs choisiront de valider leurs modifications et de les extraire.

Git et Mercurial sont extrêmement similaires. Je préfère Mercurial car je l'ai trouvé beaucoup plus facile à utiliser. Pour une équipe de 2 personnes, je recommanderais Mercurial, mais ce n'est que mon avis. Si vous n'êtes pas familier avec le contrôle de version, vous devrez toujours passer votre temps à apprendre à utiliser l'une des options, mais Mercurial m'a semblé le plus simple.

Pour démarrer un référentiel Mercurial, tout ce que vous avez à faire est d'ouvrir un Shell et un CD dans le répertoire dans lequel vous souhaitez contrôler la version et tapez hg init. Cela crée le référentiel. Pour ajouter tout dans le dossier au référentiel, tapez hg add .. Voici quelques autres commandes diverses:

  • Pour valider les modifications locales: hg commit -m "Descriptions of changes"
  • Pour passer à la dernière version du serveur: hg pull
  • Pour pousser les modifications locales: hg Push
53
Conceited Code

Pour commencer, il y a la langue dans laquelle ils sont écrits. Mes expériences avec Git et Mercurial ont été très similaires, mais je sais que si je veux Tweak Mercurial, je peux le faire, car il est écrit en Python. Git est au moins un peu en C, que je ne connais pas aussi bien.

Git et Mercurial sont ce qu'on appelle distribués. Chaque copie est créée de manière égale, et ils peuvent pousser et tirer (en utilisant cette terminologie) les changements les uns des autres sur une base ad hoc. Subversion, d'autre part, se compose d'un référentiel central unique, et chaque copie de travail est un esclave de ce serveur central, poussant et tirant (validation et mise à jour, dans ce cas) des modifications à partir d'elle et d'elle seule.

Installer Git ou Mercurial pour quelques personnes consiste à obtenir un accès SSH au même serveur et à installer quelques packages. Alors que pour SVN, pour autant que je sache, vous devez configurer et exécuter une application serveur réelle sous Apache, puis jouer avec un certificat SSL et .htaccess, etc. pour le sécuriser.

Pour tous mes projets personnels, je choisis Mercurial ou Git. Si je travaillais avec une grande équipe, j'irais probablement Subversion parce que vous bénéficiez d'une authentification et d'un hébergement centralisés. Mais pour deux personnes, je choisirais l'une des versions distribuées, car vous n'avez pas à vous soucier de l'authentification et de l'hébergement centralisés. :-)

16
jacobbaer

Git et Mercurial sont assez similaires (mais suffisamment différents pour justifier la prudence). SVN, en revanche, est assez différent: les deux premiers sont des VCS distribués, ils ne nécessitent donc pas de serveur central, contrairement à SVN. En général, de nombreux projets s'orientent vers des systèmes distribués.

Pour votre petit projet, vous êtes probablement mieux avec Git ou Mercurial. Lequel vous choisissez est essentiellement une question de goût, bien que je préfère Git moi-même (et je le connais beaucoup plus). Vous n'avez pas besoin de configurer un serveur du tout: vous pouvez pousser/tirer les modifications via SSH ou même des correctifs par e-mail les uns aux autres (cela peut être fait directement à partir du VCS, mais c'est une sorte de tracas). Vous pouvez configurer un serveur central à tout moment et toutes les modifications seront là. Vous pouvez utiliser par exemple GitHub ou Gitorious pour héberger votre projet (si vous allez avec Git, je ne connais pas Mercurial).

6
goffrie