Convertir une caisse SVN pour utiliser git (git-svn)
-
05-07-2019 - |
Question
Je travaille avec un logiciel conservé dans svn pour le contrôle de version. Je voudrais utiliser git (git-svn), mais le logiciel nécessite beaucoup de configuration et de configuration avant de pouvoir être utilisé. Il existe des outils qui prennent en charge toute la configuration, y compris la vérification de tout le code via svn.
Toute la documentation de git-svn (que j'ai pu trouver) nécessite un nouveau paiement, en utilisant git-svn.
Existe-t-il un moyen de convertir une commande svn existante afin qu'elle puisse utiliser git-svn?
La solution
Vous pouvez faire quelque chose comme ceci:
- Faites un clone complet de votre arbre SVN en utilisant git-svn, dans un répertoire temporaire. Assurez-vous que vous utilisez exactement la même révision que votre commande existante.
- Déplacez le " .git " dossier du niveau supérieur de l'extraction git-svn vers le niveau supérieur de l'extraction SVN.
- Ensuite, vous devrez soit demander à Git d'ignorer le & "; .svn &"; répertoires, ou vous pouvez tous les supprimer.
- Supprimez la commande git-svn.
- Là, vous pouvez maintenant manipuler vos fichiers existants avec Git et git-svn.
- Faire un " état du git " et espérons que cela indique qu'il n'y a pas de changement.
Autres conseils
Non. Un clone git-svn convertit le référentiel entier en git. Les extractions SVN n'ont pas l'intégralité du référentiel et ne peuvent donc pas être clonées. C’est le principal avantage de passer de SVN ou de CVS à un système distribué (comme git).
Je suppose que vous souhaitez probablement conserver l'historique. Toutefois, si vous (ou toute autre personne qui trébuche sur cette page) n’avez pas besoin d’historique, vous pouvez utiliser le & Quot; export & Quot; fonctionnalité telle qu’expliquée ici: https://stackoverflow.com/a/419475/2437521 .
Un autre moyen de le faire, qui ne modifie pas la copie de travail d'origine de Subversion et ne vous oblige pas à la copier, utilise un patch:
- Faites un clone complet de votre arbre Subversion en utilisant git-svn, dans un nouveau répertoire qui sera le référentiel Git. Assurez-vous que vous utilisez exactement la même révision que votre commande existante. Vous pouvez utiliser
git reset --hard :/r<revision>
pour le forcer à être la même révision après le clonage, où<revision>
est la révision à laquelle la copie de travail Subversion est mise à jour (voir ceci en utilisantsvn info
ici). -
cd
sur votre copie de travail Subversion. - Utilisez
svn status
pour vous assurer que tous les nouveaux fichiers sont marqués avecA
(ou utilisezsvn add
pour les ajouter), et tous les fichiers supprimés sont marqués avecD
(ou utilisezsvn rm
pour les supprimer) . - Exécutez
svn diff >patch.diff
pour créer un fichier de correctif. - Copiez
patch.diff
en haut du référentiel Git créé auparavant. -
git apply -p0 patch.diff
en haut du référentiel Git créé auparavant. - Exécutez
git status
pour appliquer le correctif sur l’arbre de travail du référentiel Git.
Vous pouvez maintenant passer en revue les modifications en utilisant git add
et git commit
/ <=> pour les enregistrer dans votre référentiel local.