web-dev-qa-db-fra.com

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

Je n'ai probablement pas réfléchi à cela, 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 simple de maintenir la branche à jour avec les révisions les plus récentes de trunk sans avoir pour passer par tous les ennuis de fusionner une gamme de révisions. Je voudrais pouvoir simplement mettre à jour et obtenir toutes les révisions du tronc (et la branche, bien sûr), tandis que mes modifications validées n'affectent que la branche. Est-ce possible? Est-ce que ce que je demande est logique?

Je suppose que ce n'est pas nécessairement nécessairement différent de la fusion d'une série de révisions; c'est juste que j'utilise AnkhSVN, qui effectue toutes ces vérifications des meilleures pratiques avant d'autoriser une fusion, et parfois on a l'impression que c'est beaucoup plus compliqué que nécessaire. L'idée est que je veux garder ma branche à jour avec les commits que d'autres développeurs peuvent faire sur le tronc de sorte que lorsque finalement do fusionne ma branche dans le tronc, tout se passe (comme ) en douceur (dans la mesure du possible).

34
Dan Tao

Garder votre succursale à jour avec les derniers enregistrements de 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.

33
Jack Marchetti

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

Ce n'est pas aussi mauvais que vous le pensez. Je décrirai les étapes de la ligne de commande que j'utilise. J'utiliserai 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

Terminé, si vous le faites régulièrement, il n'y a pas beaucoup de changements. Après la première fusion, vous devez utiliser le numéro de révision de la dernière fusion. Par conséquent, dans le futur, la commande devrait regarder dans le journal svn pour trouver quand la révision de la dernière fusion a été, dans ce cas 335. La commande de fusion ressemblerait à thuse

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

Toutes les autres étapes sont identiques.

25
flaxeater

L'idée est que je veux garder ma branche à jour avec les engagements que d'autres développeurs peuvent faire sur le tronc de sorte que lorsque je fusionne finalement ma branche dans le tronc, tout se passe (aussi bien) (que possible).

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

Je ne connais pas 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 aussi un très bon support graphique pour la fusion.

3
pajton

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

0
max4ever

Je ne connais pas AnkhSVN, mais ce que vous décrivez est exactement ce que svn merge est pour. La réponse à votre question est donc non.

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

Voir ces articles de blog:

fusion Subversion réintégrer
suivi de fusion Subversion 1.5 en bref

0
Michael Hackner