2015-03-23 1 views
0

J'ai créé une branche pour effectuer des nettoyages et des modifications structurelles sur un site Web. Le contenu du coffre étaient tout simplement les fichiers du site, comme si (en abrégé par souci de concision):Éviter les conflits d'arborescence lors de la fusion de modifications structurelles

/trunk/css/ 
/trunk/images/ 
/trunk/js/ 
/trunk/index.html 

Après branchement, je me suis déplacé le contenu un niveau plus bas et créé un autre répertoire pour le contenu non-site (fichiers principalement PSD) qui Je dois néanmoins garder et travailler avec. La structure est maintenant:

/branches/cleanup/www/css/ 
/branches/cleanup/www/images/ 
/branches/cleanup/www/js/ 
/branches/cleanup/www/index.html 
/branches/cleanup/support/psd/ 

Comment puis-je fusionner proprement ce dans le tronc sans une tonne de conflits d'arbres? Je suis sûr que j'ai déjà fait ça. Le problème est, je ne peux pas pour la vie de me rappeler comment.

J'ai fait un certain nombre de changements de tronc depuis que la branche a été créée, donc je suis inondé de conflits d'arbres.

Je suis heureux d'accepter une solution moins qu'idéales à ce moment, donc mon plan de sauvegarde est d'oublier la fusion et à la place effectuer une svn move sur le tronc à quelque chose comme /branches/old-trunk/, puis svn move la branche de nettoyage en /trunk/ et aller de là.

Y aura-t-il des effets secondaires désagréables de faire cela, en plus d'avoir à appliquer manuellement les changements de tronc à la branche de nettoyage?

+0

Vous ne devriez pas avoir de * conflit * si le tronc n'a pas changé depuis votre branchement. – ThisSuitIsBlackNot

+0

J'ai oublié de mentionner qu'il y a eu des changements de tronc. Malheureusement, ce sont des modifications mineures qui ont été appliquées à la plupart des fichiers. J'ai ébauché un plan B dans ma question, qui, avant d'être bombardé, j'apprécierais beaucoup les commentaires. – md4

Répondre

2

Si aucun changement n'a été apporté aux fichiers dans trunk, vous n'obtiendrez aucun conflit.

Si vous avez modifié l'un des fichiers de trunk, qui ont également été déplacés dans la branche, il est impossible de résoudre ce problème dans Subversion sans générer de conflits d'arborescence.

Mise à jour

Si vous déplacez votre branche pour l'utiliser comme nouvelle trunk, il brisera la résolution automatique de fusion pour toutes les autres branches que vous pourriez avoir. A part cela, il ne devrait pas y avoir de problèmes avec ce déplacement, puisque trunk n'est en aucun cas "spécial" ou différent de tout autre répertoire quand svn est concerné.

+0

J'avais craint que c'était le cas. J'ai mis à jour ma question avec une approche Plan B sur laquelle j'apprécierais beaucoup de commentaires avant de l'essayer. – md4

1

Si vous êtes prêt à jeter les modifications apportées au tronc depuis qu'il a fait votre branche, vous pouvez utiliser l'option --accept à svn merge pour indiquer que vous souhaitez toujours utiliser la version de branche en cas de conflit:

svn checkout TRUNK_URL WC_PATH 
svn merge --accept theirs-full BRANCH_URL WC_PATH 

Vous pouvez également essayer theirs-conflict au lieu de theirs-full pour ne prendre que les régions en conflit des fichiers de la branche, au lieu de chaque fichier dans son intégralité. Dans votre cas, puisque vous avez tout déplacé dans un répertoire séparé, je ne pense pas qu'il y aura de différence, mais j'essaierais les deux et comparerais. En fin de compte, cependant, vous avez probablement fait ces changements au tronc pour une raison. Je voudrais juste mordre la balle et résoudre les conflits au lieu de jeter votre travail à la poubelle. Il existe d'autres solutions possibles qui pourraient rendre le processus moins pénible, comme déplacer des éléments de votre branche dans la même structure de répertoire que le tronc, effectuer la fusion, rebrancher et simplement changer la structure du répertoire, mais vous introduisez des complication. En outre, c'est pourquoi vous devriez souvent fusionner.L'introduction du suivi de fusion automatique dans SVN 1.5 rend le processus beaucoup moins douloureux que par le passé.

+0

Je n'étais pas tellement disposé à rejeter les changements au point d'accepter la probabilité d'avoir à les ré-appliquer manuellement après la fusion. – md4

+0

En rétrospective, je pense que je me suis trompé. J'aurais dû restructurer les dossiers du projet dans le tronc, puis ramifié pour faire le travail de nettoyage réel. – md4