Ce message peut être un peu long, mais si vous pensez pouvoir nous aider, lisez-le s'il vous plaît.svnmerge est vraiment là pour m'aider?
Voici le scénario. Je travaille sur un projet [pour KDE], dont le tronc est hébergé chez, disons: http://ubersvn.org/home/uber/trunk/myapp. Aussi, je travaille sur une branche, disons: http://ubersvn.org/home/uber/branches/work/myapp-mod. Voici ce que j'ai fait:
Après avoir créé une branche, j'ai travaillé sur ma copie de travail locale de la branche et j'ai souvent utilisé des modifications du tronc. On m'a dit que cela aiderait à prévenir une multitude de conflits quand il s'agirait finalement de revenir au tronc. Alors, assez souvent, je faisais:
svnmerge.py merge
svn commit -F svnmerge-commit-message.txt
Après le travail a été fait, il était temps de fusionner la branche dans le tronc. J'ai d'abord vérifié une copie de travail du tronc:
svn co svn+ssh://ubersvn.org/home/uber/trunk/myapp
cd myapp
Puis, je suivais le documentation pour la fusion de retour:
svnmerge init svn+ssh://ubersvn.org/home/uber/branches/work/myapp-mod
Et pour fusionner les deux sens:
svnmerge merge --bidirectional -S svn+ssh://ubersvn.org/home/uber/branches/work/myapp-mod
Et Voici où le problème commence. Tout d'abord, de la regarder, il fusionne chaque révision depuis que j'ai ramifié. Si c'est le cas, je ne vois pas l'intérêt de tirer fréquemment du coffre et de tenir ma branche à jour. Cependant, je suppose que svnmerge l'utilise en quelque sorte pour résoudre les conflits tout au long de la fusion. Jusqu'ici tout va bien.
En second lieu, il a pris fin abruptement avec une erreur qui sonnait quelque chose comme:
Attempt to add tree conflict that already exists
Une petite recherche en ligne m'a dit que le problème pourrait être résolu par:
svn resolve --accept working -R .
Et puis cela montre que certaines résolutions ont été effacées et toutes. Cependant, maintenant, quand je fais ceci:
svnmerge merge --bidirectional -S [BRANCH_URL]
il est dit 'aucune information svnmerge trouvée'. J'ai essayé d'utiliser svnmerge init BRANCH_URL
, mais il est dit '.' has local modifications. It must be clean
.
Donc, maintenant les problèmes que je fais face sont:
- Je ne peux pas tirer de ma branche car il y a des modifications locales
- Pour faire ma copie de travail propre, je dois engager, ce qui est une option puisque la fusion est seulement à mi-chemin et il serait définitivement briser le tronc.
- Mes fichiers sont complètement incohérents. Je ne sais pas comment les révisions ont été fusionnées, il y a des fichiers qui incluent 'mylittleapp.h', mais 'mylittleapp.h' a été créé dans une révision ultérieure.
- ** Il y a un grand nombre de conflits ** pour ** CHAQUE ** nouveau fichier qui a été ajouté dans ma branche. Je ** absolument ** ne comprends pas cela.J'étais le seul développeur travaillant sur ces fichiers, ces fichiers ne pouvaient pas dans le coffre à tout moment. Pourquoi y a-t-il autant de conflits dans ces fichiers?
- Il y a un grand nombre de fichiers appelé `mybigapp.h.merge- (à droite | gauche) .R [0-9] +` et `mybigapp.h.working`. `mybigapp.h` lui-même est plein de conflits. Tant de conflits qu'il est humainement impossible de résoudre.
- Depuis la moitié des dossiers supposent l'existence d'un fichier qui est en fait pas présent, je ne peux pas tester ou quoi que ce soit jusqu'à ce que je fais obtenir le fichier. Et je ne peux pas obtenir de révisions ultérieures après l'erreur "tenter d'ajouter un conflit d'arbre".
Alors, comment dois-je procéder d'ici? Une solution semble être juste de diff de la branche, appliquer au tronc puis commettre. Mais selon les politiques de l'organisation pour laquelle je travaille, ce n'est pas acceptable. Toute aide est grandement appréciée et je serais vraiment reconnaissant.
Merci, rohan
Quelle version de subversion utilisez-vous? Les versions> = 1,5 fournissent un suivi de fusion «intégré». À ma compréhension * svnmerge * est obsolète. – zellus