2010-02-18 8 views
7

Les avantages de l'utilisation de git-svn par rapport à git sont évidents (compatibilité svn), mais quels sont les avantages de git par rapport à git-svn?Quels sont les avantages de git par rapport à git-svn?

+5

L'accès à svn n'est pas un "avantage de git-svn par rapport à git". Le but de git-svn est de vous donner les avantages de git sur svn. Vous ne pouvez pas utilement utiliser git-svn sans utiliser git. –

Répondre

5

Cela signifie simplement que vous avez un VCS de moins à gérer dans votre chaîne de développement (svn).
En terme d'administration:

  • vous reste des référentiels distribués gérés par Git, chacun autonome avec leur histoire complète
  • vous n'avez pas à maintenir une connexion à un repo SVN central.
  • vous pouvez organiser vos sauvegardes différemment (poussant vos données à un repo nu de sauvegarde à distance, ou l'exportation de votre git par git bundle)

Et bien sûr, vous pouvez gérer tous les advantages of Git over SVN.

+0

Pouvez-vous être plus détaillé en termes d'utilisation réelle (vitesse, fonctionnalité)? – Mike

+1

@Mike: J'ai terminé ma réponse. – VonC

3

git-svn et git partagent la même fonctionnalité tout en travaillant localement. La différence apparaît quand on envoie ou reçoit des modifications du dépôt distant.

  1. Pousser contre dcommit.

    Pourquoi git-svn a besoin de cette commande distincte dcommit? Parce que le référentiel Subversion se comporte différemment du référentiel Git distant: SVN essaie toujours de fusionner les changements entrants au niveau des répertoires. Si l'on modifie un fichier qui a été modifié simultanément par un autre utilisateur, SVN rejette les modifications entrantes avec l'erreur obsolète. Sinon, commit/dcommit passe. En revanche, Git push renvoie obsolète erreur lorsque l'on modifie la même branche/étiquette, quels que soient les fichiers touchés. Par conséquent, git-svn dcommit doit s'assurer que la version qu'il vient de valider est la même que celle attendue (certains répertoires peuvent être fusionnés automatiquement pendant dcommit). Cela signifie que git-svn récupère/récupère toujours les modifications qu'il vient d'envoyer au référentiel SVN.

  2. Le fichier ignore.

    Lorsque l'on ignore certains fichiers dans un arbre de travail et valide cette modification, il n'y a aucun moyen d'envoyer cette modification avec git-svn dcommit. Il n'y a donc aucun moyen de partager les ignorés avec d'autres utilisateurs du référentiel SVN.

  3. Attributs Git.

    Subversion et Git ont toutes deux des métadonnées associées aux fichiers et répertoires. Semblable à .gitignore il n'y a aucun moyen de partager .gitattributes avec des collègues.

  4. La fusion est validée.

    Enfin, lorsque l'on essaie de dcommit un commit de fusion il y a une chance que certaines validations ne soient pas du tout envoyées au dépôt SVN.Cela se produit lorsque toutes les validations d'une branche fusionnée n'ont pas encore été validées dans le référentiel SVN.

La plupart de ces problèmes git-svn sont difficiles, voire impossibles à résoudre. Vous pouvez considérer SubGit - une alternative côté serveur à git-svn qui corrige la plupart d'entre eux.

Pour plus de détails, voir SubGit documentation et SubGit vs. git-svn comparison.

Questions connexes