web-dev-qa-db-fra.com

Des instructions sur l’utilisation de TortoiseGit pour interagir avec un référentiel SVN?

J'utilise TortoiseSVN sous Windows depuis des années avec des référentiels de systèmes de fichiers locaux pour mes propres projets. Je prévois de commencer à collaborer avec un ami sur l'un des projets et je vais transférer le référentiel sur mon propre site web. J'ai lu beaucoup de "git beats SVN!" messages au cours des deux dernières années, et je me suis dit que je devais au moins voir ce qu’il en était de la conversation. Certaines recherches ont abouti à la commande "git svn", et TortoiseGit prétend avoir un certain niveau de support de git-svn. J'aime l'idée de conserver le référentiel SVN et de faire des commits locaux ou des branches avec git avant de les valider dans le référentiel. La commande "shelve" semble également utile.

Malheureusement, bien qu'il existe un certain nombre de tutoriels CLI sur git-svn, il n'y a rien pour TortoiseGit (qui semble être encore en développement). Par conséquent, j'ai du mal à comprendre le flux de travail dont j'ai besoin pour faire coopérer ces éléments.

J'ai un référentiel SVN dans D:\Projects\repositories\MyProject. J'ai créé D:\Projects\temp\gittest et j'ai essayé de faire un "Clone Git" TortoiseGit du référentiel. À partir de là, j'ai eu du mal à indiquer l'emplacement des dossiers de lignes réseau/branches/balises (qui ne sont que la présentation standard de mon référentiel). Je n'ai pu obtenir des résultats utiles que lorsque je les ai laissés sans contrôle. Lorsque j'ai semblé que le référentiel git avait démarré correctement, j'ai pu faire quelques modifications et faire quelques commits git, mais j'ai eu des problèmes pour faire un SVN DCommit.

J'espère donc que quelqu'un pourra fournir un ensemble assez détaillé d'instructions sur l'utilisation correcte de TortoiseGit avec un référentiel SVN existant (avec le référentiel sur le système de fichiers local ou sur un serveur distant). Non "n'utilisez pas SVN!" réponses, s'il vous plaît - je suis intéressé à apprendre à obtenir ces deux pièces de travailler ensemble. Si vous estimez que le support SVN de TortoiseGit n'est pas assez mature pour que cela fonctionne, ce serait également une information utile.

Merci!

38
markerikson
  1. Créer un répertoire
  2. clic droit, "Git Clone ..."
  3. Activer "Du référentiel SVN" et sélectionner tous les autres paramètres
25
StefanPapp

Mise à jour: Je maintiens ma réponse à la question telle qu'elle est écrite ("Je prévois de commencer à collaborer avec un ami ..."), mais si vous voulez/devez garder Subversion, j'ai plutôt aimé mon flux de travail git-svn .

La seule raison pour laquelle git-svn existe est de permettre l'utilisation de Git aux côtés d'une infrastructure Subversion existante. Comme vous n’avez pratiquement aucune infrastructure, il n’ya absolument aucune raison de ne pas basculer complètement vers Git. git-svn est meilleur que svn, mais devrait être évité autant que possible.

Je vous encourage vivement à git svn clone -s --no-metadata <path_to_svn> puis à oublier que vous avez déjà eu svn.

9
dahlbyk

C'est probablement évident maintenant, mais tortoisegit a maintenant un support intégré pour git-svn.

8
JBCP

Cela a déjà été noté - il suffit de le mettre ici comme une réponse appropriée :)

TortoiseGit a maintenant un support intégré pour SVN, donc cela devrait fonctionner correctement.

3
getack

Vous pouvez essayer d'utiliser TortoiseGit sans support SVN intégré plutôt que comme un client Git habituel. Pour que cela fonctionne, vous pouvez installer SubGit dans le référentiel SVN.

Ci-dessous, j'ai énuméré quelques instructions de base pour configurer SubGit:

$ subgit configure SVN_REPOS
# Adjust SVN_REPOS/conf/subgit.conf to specify your branches and tags
# Adjust SVN_REPOS/conf/authors.txt to specify git & svn authors mapping
$ subgit install SVN_REPOS
...
$ INSTALLATION SUCCESSFUL

Après l'installation, vous pouvez trouver le référentiel Git à l'adresse SVN_REPOS/.git et l'utiliser comme avec le référentiel Git normal. Chaque git Push exécuté par TortoiseGit déclenche des points d'ancrage de pré-réception et de post-réception qui répliquent les modifications entrantes dans le référentiel SVN.

Pour plus de détails, veuillez vous référer à Documentation SubGit et git-svn page de comparaison.

À partir de la version 2.0 (pas encore publié au moment de la publication), SubGit permet de synchroniser les référentiels Subversion et Git situés sur différents hôtes.

SubGit est un outil commercial, mais il est gratuit pour les dépôts comptant jusqu'à 10 auteurs et pour les projets open-source et universitaires.

Disclaimer: Je suis l'un des développeurs de SubGit.

1
vadishev

J'ai utilisé msysgit depuis http://msysgit.github.com/ pour pouvoir extraire du référentiel Subversion ce qui nécessite l'acceptation du certificat de sécurité et d'autres options d'invite de commande. Une fois que le code a été extrait, j'ai pu utiliser TortoiseGit pour la plupart des fonctionnalités (à l'exception du svn Push AFAIR).

1
Hara Hara

Pour mémoire: SourceTree pour Windows envisage de prendre en charge git-svn (et hgsubversion) à partir de la version 1.4. Le numéro correspondant est SRCTREEWIN-119 .

0
cimnine

Peut-être que vous pouvez mettre vos projets sur github qui supporte un svn access . Vous pouvez donc continuer à utiliser TortoiseSVN et collaborer avec d’autres. D'autre part, vous pouvez utiliser des éléments tels que sourceforge, etc. pour collaborer via SVN au lieu de git. BTW pourquoi ne pas utiliser git svn clone URLOfTheSVNRepos et plus tard, git commit à la place.

0
khmarbaise