comment créer une copie locale du dépôt svn distant?

j'ai un dépôt svn distant. Je veux le vérifier (avec Historique) puis l'utiliser dans Visual Studio comme dépôt régulier. Après un certain temps, je soumettrai (propagerai les modifications) du dépôt local au dépôt distant (et mettrai également à jour les fichiers s'il y en a).

il semble donc que j'ai juste besoin de deux copies de SVN repository et j'ai besoin de pouvoir les synchroniser.

Comment faire cela?

10
demandé sur bahrep 2012-01-20 00:44:36

4 réponses

cela va à l'encontre de ce QU'est SVN. Ce qu'il semble que vous voulez est un DVCS comme Git ou Mercurial, d'où la raison pour laquelle de nombreux développeurs ont déménagé à quelque chose comme ça.

je voudrais utiliser git; et l'utilisation de la git-svn pont pour pouvoir communiquer avec votre serveur SVN.

Git conserve une copie complète du dépôt lorsque vous clonez à partir de SVN (ce qui signifie que le clone initial peut prendre un long temps depuis qu'il a besoin de vérifier chaque révision). Vous puis s'engage localement dans votre dépôt Git; et dcommit (push) retourne dans votre dépôt SVN.

Je ne sais pas comment utiliser SVN seul. Un flux de travail typique pourrait être:

git svn clone http://yoursvnserver/svn --username vcsjones

#make some changes
git add -A
#stage your changes. add -A stages all changes;
#you can stage individial files too or use git add -i for interactive adding
git commit -m "My commit messages"

#repeat makes changes and commit as many times as you want
git svn dcommit
#commit all local commits back to the SVN repository.

si vous êtes un one man shop; gardez votre dépôt sur une clé USB (et assurez-vous qu'il est sauvegardé en quelque sorte incase vous le perdez; il devient défectueux).

20
répondu vcsjones 2012-01-20 15:00:40

Comme d'autres réponses ont indiqué, Vous ne pouvez pas avoir 2 SVN repo avec synchronisation bidirectionnelle. Pour SVN-SVN pair, vous ne pouvez construire que one-way sync RO SVN-mirror.

pour un repo local qui peut échanger avec central, vous doit utiliser DVCS. Il n'y a aucun moyen de le faire avec un SVN simple, sans utiliser un DVCS auxiliaire. Si vous ne voulez pas de Git, vous pouvez utiliser Mercurial avec Hgsubversion, Bazaar... mais de toute façon, C'est un supplément de SCM.

pour le travail en solo (si vous vraiment de cette façon), il serait préférable de branche sur le serveur. Il suffit de ne pas oublier de fusionner régulièrement le tronc à votre branche; cela vous aidera à éviter un mal de tête " fusionner."

7
répondu Lazy Badger 2014-05-30 20:58:24

Comme vsjones répondu, vous pouvez utiliser git-svn checkout d'un dépôt Subversion, l'utiliser comme un dépôt Git local, puis l'envoyer en arrière jusqu'à, il. Vous pouvez même utiliser le Microsoft Source De Git Fournisseur De Contrôle pour vous permettre d'intégrer Git avec VisualStudio.

HOWEVER, je voudrais vous demander pourquoi vous voulez le faire. Il semble que vous pourriez être ce que nous appelons en langage CM rampant dans votre Grotte.

rampant dans votre caverne signifie qu'au lieu de travailler avec tout le monde, vous allez faire votre travail dans le privé sans surveillance. Vous voulez que votre code soit absolument parfait. Vous voulez un chef-d'œuvre de code informatique. Ensuite, vous allez découvrir le monde sans méfiance qui seront impressionnés par vos compétences de codage. Vous serez salué un génie, et peut-être même l'occasion de parler à une fille.

bien sûr, le problème est que le codage fonctionne toujours mieux lorsqu'il est à la vue du public. Les révisions de Code ne sont pas seulement pour le code terminé. C'est aussi pour le code pendant qu'il est écrit. Avant d'aller trop loin sur un sentier aveugle.

un autre problème est la tendance des développeurs à mordre plus qu'ils ne peuvent mâcher. Si je dois vérifier mon travail sur le même tronc que tout le monde, je suis plus susceptible de prendre de plus petites bouchées de code. (Oui j'aurais pu faire un jeu de mots sur octets, mais je vais essayer d'être sérieux). Je vais faire un changer, peut-être ajouter quelques méthodes, tester et s'engager. Ensuite, faites plus de changements, testez et commit.

j'ai l'habitude d'être un administrateur de ClearCase. Dans ClearCase, chaque développeur obtient son propre flux de développement. Vous codez sur votre flux, puis fusionnez votre travail dans le flux d'intégration. (En gros, tout le monde a sa propre branche, et vous avez fusionné vos modifications dans le tronc). Dans le cadre de mon travail, je voudrais tracas développeurs pour vérifier leurs modifications. J'ai couru les rapports de la dernière fois qu'un développeur code livré. Je devais constamment Gérer les problèmes de fusion. Je me suis senti comme un flic en patrouille.

alors, j'ai eu un travail où tout le monde utilisait des CV. Dans le CVS, la ramification est une douleur, donc tout le monde a travaillé sur la même branche. Je ne pouvais pas imaginer comment ça pourrait marcher. Comment trois douzaines de développeurs peuvent travailler tous sur la même branche? Pourtant, avec le temps, j'ai commencé à réaliser que non seulement tout le monde pouvait travailler sur la même branche, mais il y avait moins de problèmes. Je n'étais plus le beat cop, et au lieu de m'assurer que tout les développeurs ont suivi les règles, je pouvais faire d'autres fonctions CM que je n'ai jamais eu le temps de faire. Ma relation avec les développeurs changé. Je n'étais plus le type qui leur disait quoi faire. Au lieu de ça, j'étais quelqu'un qui pouvait aider.

alors, faites attention à ne pas faire votre travail dans votre propre dépôt privé et ensuite livrer le produit fini à votre équipe. Si vous faites un travail important qui nécessitera un développement à long terme qui pourrait briser la construction pendant que vous le faites, demandez votre propre branche de fonctionnalité dans Subversion. De cette façon, tout le monde va voir ce que vous faites.

cela ne veut pas dire qu'il n'y a pas de raison légitime pour utiliser git svn. Personnellement, j'aime vérifier mon code de temps en temps. Cela me donne la possibilité de retourner un fichier comme il était de cinq ou dix minutes avant que je commence à faire un gâchis. Je prends encore de petites morsures, et je vérifie mon code quand j'ai fini. Je ferai environ 3 à 4 propagations par jour dans notre dépôt principal. Je trop utiliser svn git, mais pas pour que je puisse ramper dans ma caverne, mais donc j'ai une corde de vie que je peux utiliser pour me tirer d'une situation de codage salissant.

donc, jetez un coup d'oeil à git svn, mais s'il vous plaît n'utilisez pas l'excuse que vous avez votre propre dépôt pour vous cacher du reste de votre groupe. Vous pouvez utiliser le ms Git Provider(ou le [fournisseur SVN de AnkhSVN