2010-11-30 33 views
1

J'avais mis à jour le serveur Ubuntu 10.04 - mais il a supprimé SVK que j'avais utilisé pour les besoins vc distribués, comme beaucoup de mes vieux projets étaient encore enveloppés dans des dépôts subversion auto-hébergés sur divers serveurs. Cela fonctionnait adéquatement pour le moment entre mes différents systèmes. J'ai décidé de migrer sur Bazaar que j'évaluais déjà en utilisant dans de nouveaux projets.Comment puis-je fusionner de nouvelles modifications non validées d'un ancien répertoire de travail de subversion vers un nouveau référentiel bazaar importé?

J'ai installé le plugin bzr-svn pour permettre l'utilisation de svn import- - et mettre en place des référentiels avec succès dans/var/bzr/repo/où tous les projets ont été importés dans leur ensemble (en utilisant la disposition de trunk2 auto-détectée). bzr log confirme l'importation réussie de tous les projets.

Malheureusement, plusieurs de mes projets ont plusieurs changements non validés dans un dossier de travail - ceux-ci je voudrais réintégrer dans le référentiel /var/bzr/repos/projectname central. Je voudrais que ce soient de nouvelles révisions au dessus des dépôts nouvellement importés.

Comment dois-je procéder?

Ces dossiers de travail sont par exemple/var/www/projectname/htdocs - certains sont sur le serveur de développement, et certains sont sur un ordinateur Windows pour ordinateur portable (qui a déjà le bazar et la subversion installé)

J'ai essayé de courir bzr init et bzr fusionnent le fichier: // var/bzr/repos/projectname/trunk - ceci crée un grand nombre de conflits; alternativement j'ai essayé: bzr init; bzr ajouter et bzr fusionner. Dans chaque cas, j'ai essayé d'effacer les fichiers nouvellement générés à partir de la fusion - et de renommer les fichiers .moved, et de les valider - cela a pour effet de faire commencer les numéros de révision de 1 à -301. Un autre résultat différent a été la perte totale de l'historique du journal lorsque j'ai essayé de "bzr pousser" les modifications locales validées. Heureusement, j'ai pu réinitialiser et réimporter le référentiel depuis la source de subversion d'origine à chaque fois. La route longue serait de simplement faire un branchement/extraction dans un nouveau dossier, et diff/refaire les changements, mais je voudrais éviter de recoder les changements ou d'exécuter une opération de fusion de répertoires kdiff.

Le résultat souhaité serait d'appliquer les nouvelles modifications à la branche centrale/var/bzr/repos/projectname tout en préservant les numéros de révision et le journal.

Répondre

0

Si je comprends bien, je voudrais: copier le .bzr dir de la branche que vous voulez baser les autres changements sur (mainline/main) dans le workingdir avec les autres changements. Ensuite, vous pouvez faire un commit bzr là-bas et le pousser sur votre branche principale/principale. Répétez l'opération pour chaque zone de travail avec des modifications non validées.

+0

J'ai essayé ceci sur les copies de travail sur le serveur - et cela semble fonctionner très bien. Il est un peu plus difficile à réaliser sur un ordinateur portable, mais si j'ai un accès SFTP à la branche principale, cela devrait être possible. – Fai

0

Si vous n'avez pas effectué de commit sur le dépôt bzr, vous pouvez valider sur le dossier de travail svn (donc placer ces modifications sur le dépôt SVN), et répéter l'opération svn-import avec bazaar. Il va seulement ajouter les révisions manquantes.

+0

Le référentiel svn (ou plutôt svk) n'a pas les méta-données requises pour permettre la validation lorsque la mise à niveau du serveur a été supprimée SVK. Merci pour la suggestion cependant. – Fai

+0

Ensuite, vous pouvez créer un fichier patch à partir de l'arbre de travail SVN, et l'appliquer sur la branche bzr avec "patch bzr" – Federico