Puis-je mettre à jour une branche du tronc sans effectuer de fusion?

Je n'ai probablement pas réfléchi, ou peut-être que je ne suis tout simplement pas au courant d'une option déjà existante dans Subversion (Je ne suis certainement pas un expert).

Je me demande simplement si j'ai créé une branche pour commencer à travailler sur une nouvelle fonctionnalité, s'il existe un moyen plus facile de garder la branche à jour avec les révisions les plus récentes du trunk sans avoir à fusionner une série de révisions. Je voudrais être en mesure de simplement mettre à jour et obtenir toutes les révisions du tronc ( et la branche, bien sûr), alors que mes modifications validées n'affectent que la branche. Est-ce possible? Est-ce que ce que je demande a du sens?

Je suppose que ce n'est pas nécessairement différent de fusionner une gamme de révisions; c'est juste que J'utilise AnkhSVN, qui effectue toutes ces vérifications de bonnes pratiques avant d'autoriser une fusion, et parfois il semble que c'est beaucoup plus compliqué que nécessaire. L'idée est que je veux garder ma branche à jour avec tout commits d'autres développeurs peuvent faire au tronc de sorte que lorsque je finirai parFaire fusionner ma branche dans le tronc, tout se passe (comme) en douceur (comme possible).

33
demandé sur Michael Hackner 2010-03-03 18:17:00

5 réponses

Garder votre branche à jour avec les dernières vérifications du tronc s'appelle une fusion.

Je sais que la fusion peut parfois être un cauchemar royal, mais c'est précisément ce qu'est la fusion.

32
répondu Jack Marchetti 2010-03-03 15:22:48

TL; DR; Non vous devez fusionner, voici quelques instructions

Ce n'est pas aussi mauvais que vous le pensez. Je vais décrire les étapes de la ligne de commande que j'utilise. Je vais utiliser vimidiff pour gérer les conflits que vous pouvez utiliser Meld ou un autre outil de diff que vous aimez. Les commandes sont précédées de la marque de hachage " # "

<in branch first time from copy>
# svn log --stop-on-copy | tail 
<read the revision that was the copy instruction in this case r229>
# cd ../../trunk
# svn up
<I make note of the latest rivision which is r334>
<now I go back to the branch>
# cd ../branches/branch 
# svn merge -r229:334 svn://url.to.svn.server/project/trunk
<a whole bunch of stuff happens>
< now I check for conflicts >
# svn status | grep ^C
<which outputs something like>
C       public/tools/Diagnostic.class.php
C       public/domain/Report_Setup_Parameter.class.php
C       public/modules/mReports.module.php
<I now revert all these and manually merge them>
# svn revert public/tools/Diagnostic.class.php
...
<revert done now manuall doinng the merge
# vimdiff public/tools/Diagnostic.class.php ../../trunk/public/tools/Diagnostic.class.php
...
<now all the changes are done>
# svn commit -m "Merging trunk into branch 'branch' r:229:334"
commited revision 335

Fait, si vous le faites régulièrement, il n'y a pas beaucoup de changements. Après la première fusion, vous devez utiliser la révision # de la dernière fusion. Par conséquent un certain temps dans le future la commande regarderait dans le journal svn pour trouver quand la révision de la dernière fusion était, dans ce cas 335. La commande merge ressemblerait à thuse

# svn merge -r335:370 svn://url.to.svn.server/project/trunk

Toutes les autres étapes sont les mêmes.

23
répondu flaxeater 2010-03-03 15:36:05

L'idée est que je veux garder mon branche à jour avec tous les commits d'autres développeurs peuvent faire à la tronc de sorte que quand je le fais finalement fusionner ma branche dans le tronc, tout va (comme) en douceur (comme possible).

Pour y parvenir, vous devez faire des fusions de révision de plage à partir du tronc. En fait, c'est une bonne pratique pour faire ce genre de fusion d'une branche de temps en temps pour être à jour avec ce qui se passe dans le coffre.

Je ne sais pas à propos de les outils pour AnkhSVN, mais SVN' pur ' a de très bons outils qui rendent les opérations de fusion assez simples. TortoiseSVN est un excellent outil pour Windows et si vous aimez Netbeans il y a une très belle interface graphique pour fusionner trop.

3
répondu pajton 2010-03-03 15:21:22

Je ne suis pas familier avec AnkhSVN, mais ce que vous décrivez est exactement à quoi sert svn merge. Si la réponse à votre question est non.

Cependant, vous pouvez consulter l'option --reintegrate pour voir si cela vous facilite la vie.

Voir ces articles de blog:

La Subversion de fusion réintégrer
Subversion 1.5 fusion de suivi en un mot

0
répondu Michael Hackner 2010-03-03 15:21:16

Si vous utilisez PHPStorm, vous pouvez essayer d'utiliser l'interface graphique https://www.jetbrains.com/help/idea/2016.1/integrating-changes-to-from-feature-branches.html

0
répondu max4ever 2016-05-31 13:57:27