2010-02-15 7 views
3

Je travaille sur un correctif pour un projet open source qui utilise svn. Je n'ai pas d'accès commit mais je veux suivre la version de mes propres changements. J'ai suivi this guide pour lire et convertir le svn repos en un hg un.Comment tirer les modifications de svn repos après la migration à mercurial

Je veux être en mesure de tirer de nouvelles modifications du svn officiel repos dans ma propre copie locale, comment cela peut-il être atteint? Après l'importation, mon dossier local contenait un fichier .hgignore non suivi. Devrais-je ajouter celui qui doit être suivi par mercurial?

J'ai aussi regardé dans this tool mais il semble plus orienté vers le simple travail local dans mercurial connecté à svn repos. Je veux mettre mes repos mercurial sur bitbucket et pour cela l'ancien guide a semblé avoir plus de sens.

Il est peut-être trop tôt pour réfléchir, mais plus tard quand ma contribution est terminée, quelle est la meilleure façon de générer un correctif pour envoyer en amont? Y a-t-il des mises en garde dont je devrais être conscient tout de suite?

Edit:orip's answer (la partie d'édition de celui-ci) résume à peu près exactement ce que je veux faire: local hg copy qui peut update de svn mais aussi push à mon repo en ligne bitbucket.

Répondre

1

Vous pouvez jeter un oeil à TortoiseHg wiki on SVN-Utiliser TortoiseHg en tant que client pour un serveur Subversion section, peut-être vous aider à prendre une décision sur les outils présentés dans le wiki Mercurial vous avez lié votre question.

Vous pouvez également consulter la réponse donnée par VonC sur cette question: Mercurial from Subversion: moves, renames and tags

+0

Si le client TortoiseHg me permettait de faire à la fois une extraction et ensuite des mises à jour à partir d'un svn repos tout en étant en mesure de pousser vers mes repos hg, ce serait génial. Je vais vérifier ça. – Mizipzor

2

Tirer de nouveaux changements est facile: consultez le code svn, et régulièrement 'svn update', puis vérifiez les fichiers téléchargés dans votre repo mercurial.

Le fichier .hgignore est là pour indiquer quels types de fichiers ne doivent pas suivre, c'est-à-dire ignorer. N'ajoutez pas cela à votre repo mercurial, il y a de fortes chances que cela contienne les mêmes exclusions que votre subversion global-ignore.

génération de patch dans SVN est facile, faire svn diff > myPatch.diff (après mise à jour du repo svn)

+0

Vous voulez dire une simple copie de fichier dans mon arbre mercurial local? Y a-t-il un moyen de préserver l'histoire comme l'a fait l'importation initiale? – Mizipzor

+0

il n'y a aucun problème à ajouter le fichier .hgignore au repo, en fait le livre le recommande –

1

Le guide que vous avez utilisé convertis svn hg, mais est destiné à une conversion unique, et non pour l'interopérabilité continue. Vous voulez quelque chose comme hgsubversion.

EDIT: vous avez juste remarqué que vous y étiez lié dans la question. Il ne devrait pas y avoir de problème à garder un clone de votre dépôt sur bitbucket - interagir avec SVN avec hgsubversion localement, et pousser vers bitbucket comme vous le feriez normalement - vous avez un repo hg régulier.

+0

Vous l'avez à peu près cloué là avec ce que je vise (la partie edit). Mais je n'ai toujours pas compris si les dossiers .svn et .hgsvn devraient être suivis dans ma copie, vous ne savez pas cela? J'attends également que de nouvelles choses apparaissent sur les repos svn officiels pour essayer une mise à jour à partir de là. – Mizipzor

2

Vous pourriez envisager de travailler avec MQ. Donc, vous auriez un projet géré par deux VCS en même temps:

  • SVN: pour rester à jour avec le dépôt principal
  • HG: où vous allez effectuer addremove commandes après chaque mise à jour de SVN et où vous utiliserez MQ pour écrire vos correctifs.

Cela étant, il sera également beaucoup plus facile de fournir votre correctif au référentiel principal.

+0

À première vue, il semble un peu exagéré/compliqué. Mais peut-être que je sous-estime le problème ici. Je vais regarder dedans, merci! – Mizipzor

+0

Si vous voulez, prenez pour référence le workflow décrit ici: http://bitbucket.org/segv/hg-website/wiki/Workflows dans la section "Dealing with CVS" – gizmo

Questions connexes