2009-07-09 12 views
4

J'ai extrait une copie d'un projet hébergé sur google code. Je vais y apporter des modifications, et j'aimerais les garder sous contrôle de version sur un dépôt sur ma machine locale. Je voudrais utiliser svn si possible, parce que je connais déjà les bases de la création d'un dépôt, de l'extraction et de la validation. Est-ce que je peux le faire avec svn ou est-ce que je devrais regarder le contrôle de version distibuted? J'utilise Linux, pas Windows.Passage de validation à une copie locale d'un référentiel SVN

+0

J'ai modifié ma réponse basée sur Linux - Note Eclipse vous offre un joli plugin subversion GUI. –

+0

Au début, j'ai choisi la réponse de Nick Lewis. Faire une exportation à partir de googlecode et ensuite ajouter ces fichiers à un repo local vous permet de rester avec svn, comme je le voulais initialement quand j'ai posé la question. Quelques jours plus tard, j'ai essayé la suggestion de Jon Weldon avec mercurial. Il a été rapide à apprendre les commandes mercurial de base, et si le projet est mis à jour sur googlecode, il sera beaucoup plus facile d'importer des modifications dans mon référentiel local. Changer la réponse acceptée reflète ma propre expérience, YMMV. – Alasdair

Répondre

6

J'ai été très heureux d'utiliser svn sur un dépôt distant + en utilisant mercurial ou git comme référentiel local au-dessus du repo svn.

Ce sont deux outils de contrôle de source distribués, et je les aime tous les deux pour des raisons légèrement différentes.

Je l'ai trouvé pour être très puissant pour utiliser mon propre repo local qui coïncide avec un dépôt subversion à distance ...

Mise à jour

Bien que je vraiment comme les réponses sur l'exportation de Google code, et l'importation de votre repo local, ce que j'aime vraiment de la combinaison de svn et git/mercurial est que vous pouvez périodiquement faire une mise à jour svn pour obtenir le dernier code de google, puis à un commit git ou un commit hg ajoutez le dernier code à votre dépôt local.

Beaucoup plus simple que de faire périodiquement une exportation svn dans votre repo pour obtenir des mises à jour. En outre, en utilisant git/mercurial, vous disposez de puissants outils de branchement/correctifs que svn ne rend pas si faciles.

+0

Je peux voir pourquoi combiner git et svn est peut-être une solution plus élégante. Mais dans ce cas, coller avec svn est assez bon, et permettez-moi de revenir plus rapidement au codage. Je vais essayer git/mercurial à l'avenir. – Alasdair

+1

«À l'avenir» s'est avéré être quelques jours plus tard. Cette réponse fonctionne très bien pour moi. – Alasdair

3

OUI! Merci d'utiliser un outil de contrôle de version. SVN est très simple à utiliser, donc je le suggère.

Une chose qui pourrait être utile est que vous pouvez utiliser Eclipse + PyDev (pour python) + Subeclipse (pour votre SVN). Cela devrait être une belle pile indépendante de la plate-forme, qui vous gagne un client SVN gui-activé. Soyez sûr de vérifier le plugin Mylyn qui vient avec la plupart des paquets Eclipse - c'est vraiment génial.

Une alternative pour les utilisateurs Windows est TortoiseSVN - suivez leur tutoriel pour créer un référentiel.

Le plus simple pour un seul utilisateur est d'utiliser le protocole "Fichier". Un peu plus difficile consiste à configurer un serveur SVN approprié, que vous pouvez désactiver jusqu'à ce que vous compreniez mieux SVN - il vous permet de travailler à partir de plusieurs machines.

+0

Le dépôt va vivre sur le serveur de mon hébergeur, j'ai donc besoin de me salir les mains avec la ligne de commande. Cela dit, j'ai utilisé TortoiseSVN sous Windows, et l'interface graphique est très pratique. Je vais vérifier Subclipse à un point. Merci pour le conseil! – Alasdair

1

svn commit valideront vos modifications dans le référentiel (distant). Si vous voulez vous enregistrer localement avant de pousser vers le référentiel distant (le cas échéant), alors un outil distribué comme git ou mercurial est ce que vous voulez.

2

SVN est un très bon système de contrôle de version. Il est utilisé dans de nombreux projets importants et est également facile à utiliser tout en ayant des options puissantes.

Si votre copie locale pointe vers le code Google. Vous pouvez effectuer une exportation, qui extrait essentiellement les informations de contrôle de version, puis les importe dans votre SVN local.Cela signifie que vous perdrez tout l'historique précédent et que vous commencerez à partir de rien et que vous aurez désormais l'historique des changements que vous effectuez localement et que vous commettrez sur votre SVN.

Si vous avez besoin de conserver l'historique de tous les validations dans Google Code à ce point dans votre SVN local, alors laissez-nous savoir que cela peut être fait.

Si vous avez également besoin de valider votre code local à google code, faites-le nous savoir aussi, pour nous expliquer comment procéder.

Espérons que cela aide.

+0

Bingo! L'exportation est le concept dont j'avais besoin mais je ne connaissais pas le nom de. Merci! – Alasdair

1

Oui.

Vous pouvez créer votre référentiel local en utilisant

svnadmin create repositoryName 

Et vous pouvez faire votre première caisse en utilisant les commandes svn régulières.

svn checkout file:///path/to/your/repositoryName 

Assurez-vous que vous faites réellement une exportation du projet que vous avez obtenu via le code google et non une caisse svn. Sinon, vous rencontrerez des problèmes avec les fichiers .svn déjà existants pour un autre référentiel. Prenez tous les fichiers que vous avez obtenus à partir de votre exportation et déplacez-les dans votre copie locale nouvellement créée, ajoutez tous les fichiers à svn et validez.

Lorsque vous voulez reporter vos modifications, tout simplement

svn update 

le répertoire qui contient un extrait version du référentiel de code google, écraser tous les fichiers que vous avez modifiés (ou utilisez diffs pour effectuer les modifications) puis retournez dans le dépôt.

1
svnadmin create project-local-repo 
svn checkout file:///path/to/project-local-repo project-branch 
svn export http://PROJECT.googlecode.com/svn/trunk/ project-branch 

Cela (devrait) créer un nouveau référentiel en projet local repo sur votre machine pour votre branche et la caisse de ce dépôt dans le dossier branche du projet. Ensuite, il va exporter une copie propre des fichiers du dépôt principal dans votre dossier de branche de projet. Ensuite, vous avez juste besoin d'ajouter ces fichiers au repo (local) et de commettre et vous devriez être bon à faire. Ceci est entièrement non testé et hypothétique cependant ..

+1

Correction, merci pour les heads-up. J'utilise TortoiseSVN moi-même, donc je ne connais pas toutes les commandes REAL si bien. :) –

Questions connexes