11
votes

SVN - gérer une fusion partielle d'une révision

J'ai donc un problème qui me cause beaucoup de chagrin de subverion. Je travaille dans une succursale qui est censée rester active jusqu'à ce que mon ensemble de fonctionnalités soit le développement terminé avant de ré-intégrer. Malheureusement, quelque chose que j'ai achevé a maintenant été jugé par l'entreprise pour être «critique de mission» et ils veulent que je sois cerise choisissez cette fonctionnalité de la branche et poussez-la dans le coffre afin que cela puisse être ramassé par QA.

Le problème que j'ai est que j'ai développé la fonctionnalité dans un répertoire distinct que j'ai créé tout en travaillant sur autre chose entièrement. Ainsi, afin de fusionner le code restant que ma fonctionnalité nécessite, j'ai d'abord besoin de tirer dans la création de répertoire que je faisais auparavant.

Voici les révisions que j'ai besoin de yank:

Rév 20
A ./project_foo
A ./project_foo/not_required_file.txt

rev 24
A ./project_foo/required_file.txt

Pour que cela soit dans le coffre, je devais faire ce qui suit:

svn fusion -r20: 21 -> cela me reçoit le répertoire ainsi que le no.required_file.txt
svn revert projet_foo / no_required_file.txt -> Débarrassez-vous du fichier que je ne veux pas
SVN Fusion -R24: 25 -> Cela me reçoit le fichier dont j'ai besoin

Qui a travaillé et obtenu le truc dans le coffre que je voulais, mais quand j'étais devra complète et avoir couru Svn Merge --reintetèglate, je (évidemment) n'a pas obtenu le Not_required_file.txt en arrière de la révision 20 et a donc couru dans des conflits d'arbres sur elle (d'autres changements que j'ai faits plus tard).

Je suis donc à la recherche de conseils sur ce qu'il faut faire dans ces situations.

  • Y a-t-il un moyen de fusionner uniquement les changements spécifiques que je veux d'une révision spécifique?
  • Y a-t-il un moyen de saisir les changements que j'ai délibérément manqués lorsque je réinstallez toute la branche?
  • Pourrais-je créer la structure de répertoire dont j'ai besoin dans le coffre, puis fusionner uniquement les modifications du fichier?
  • Puis-je créer une autre branche, déplacer les modifications requises là-bas, réintégrer cette branche, puis tirer du coffre à ma branche d'origine?

    merci.


0 commentaires

4 Réponses :


-2
votes

Nice question. : -)

On dirait que vos branches sont un peu foirées. Vous avez de bonnes idées comment résoudre. Si ça marche? Essayez-le, parfois vous ne savez jamais.

Je pense que vous n'avez pas besoin de fusionner REV. 21 avant 24 dans votre exemple. Le répertoire manquant sera créé, de toute façon.

Si vous ne pouvez pas vous aider avec la branche / la fusion, essayez de faire le déménagement de fichiers manuellement (la tortue vous aide avec cela).

En général, éviter de fusionner partiellement des révisions. Commettre plus souvent pour que vous puissiez faire la cueillette de cerise de manière plus propre.


0 commentaires

4
votes

Y a-t-il un moyen de fusionner dans seulement la changements spécifiques que je veux d'un Révision spécifique?

Si vous ne voulez pas une révision complète, je copierais ce que vous voulez manuellement en créant un fichier de patch et en l'appliquant à l'autre branche et en vous engageant. De cette façon, au lieu de Subversion sautant cette révision plus tard (lorsque vous réintégrez la branche), il essaie de fusionner et vous ne faites que gérer un conflit ordinaire sur ce que vous avez copié manuellement, mais il fusionne également la partie que vous vouliez à l'origine sauter.

Dans le cas d'un fichier Créer / Supprimer / Ajouter, il le créerait au moment de la réintégration et évitez votre conflit d'arbres, car cette "révision partielle" que vous voulez n'était jamais officiellement fusionnée.

Dans le cas où aucun fichier n'a été créé / supprimé / déplacé, vous évitez le potentiel d'oublier que vous avez exclu une partie de votre révision lorsque vous avez fusionné précédemment.

Suivre ce qui précède empêche votre suivant:

Y a-t-il un moyen de saisir le changements que j'ai manqués délibérément quand je Ré-intégrer la branche entière?

Si vous ne fusionnez pas une révision partielle, il n'y aura rien de délibérément exclu délibérément enregistré par Subversion et vous devriez simplement avoir un conflit ordinaire pour traiter sur la partie déjà copiée.

Dans votre cas, vous pourrez peut-être dire à Subversion de fusionner la révision individuelle à nouveau, faisant l'inverse de ce que vous avez déjà fait (résoudre le conflit sur ou revenir à la partie que vous vouliez à l'origine, tout en gardant la partie que vous avez initialement laissée), Mais je ne suis pas sûr de savoir comment cela fonctionne une fois que la fusion a déjà été enregistrée.

Alternativement, si vous utilisez des tortoisisesvn, vous devriez pouvoir sélectionner la révision dans le journal (sur votre branche de fonctionnalité), cliquez avec le bouton droit de la souris sur le (s) fichier (s) que vous vous souciez de modifier dans le cadre de cette révision et "Afficher les modifications comme diff ", sauvegardez-le et appliquez-le manuellement vers le coffre (ou quelle que soit la branche de notre branche de réintégrate).

Pourrais-je créer la structure de répertoire J'ai besoin dans le coffre puis fusionnez Sur seulement le fichier change?

Essayez-le et voyez. Au pire, vous cédez un autre espace de travail ou fixez manuellement le contenu du fichier (dans le cas où il le saute)

Puis-je créer une autre branche, déplacer le les changements requis là-bas, réintégrer cette branche puis tirer du coffre à ma branche d'origine?

Maintenant, vous faites mal à ma tête :) la fixant manuellement sonne manuellement comme moins travailler pour moi. Je fixerais la partie que vous avez exclue sur le tronc puis réessayerais la réintégration de la branche.

J'espère qu'une partie de cela est utile.


0 commentaires

1
votes

Juste "Copier SVN" Dossiers manquants de la branche sur le tronc récursivement.


0 commentaires

-1
votes

Pour vos problèmes actuels, vous pouvez regarder SVK, qui a une meilleure fusion de la fusion que SVN (ou la dernière fois que j'utilisais la dernière fois que SVN suffisamment pour avoir à faire des fantasmes): http://svk.bestpractical.com/view/homepage

Je remarque que vous avez mentionné le problème des équipes multiples avec des niveaux de capacité technique variés, cependant, SVK n'est donc pas vraiment la meilleure solution. En fait, je préfère Git-svn sur SVK, car il fournit des avantages similaires (encore mieux fusions que SVN ou SVK).

Selon la partie basse de votre gamme de niveaux de compétence, SVK pourrait être suffisamment proche de SVN qu'elle pourrait faire l'affaire, mais elle ajoute des étapes supplémentaires pour pousser les changements et je ne sais pas à quel point c'est bien pris en charge sous Windows (ou si il est pris en charge sous Windows), ou si c'est un problème dans votre environnement.


1 commentaires

Appréciez la réponse, mais essentiellement un changement d'outil est sorti (seulement récemment était le passage à SVN Fabriqué - VSS précédemment utilisé) et, malheureusement, le magasin est uniquement Windows - pour tout.