2010-02-27 6 views
4

Est-il possible de configurer TortoiseMerge (fourni avec TortoiseSVN) comme l'outil de fusion externe qui apparaît lorsque vous rencontrez un conflit de fusion à l'aide de la ligne de commande "svn merge"? J'ai essayé de placer ma variable d'environnement "SVN_MERGE" pour pointer vers TortoiseMerge.exe, mais cela ne semble pas être suffisant. TortoiseMerge apparaît quand je choisis "l" (pour lancer un outil externe) me demandant quels fichiers je veux fusionner. Je veux que cette information soit automatiquement insérée dans l'outil.Configurer TortoiseMerge comme outil de fusion externe pour SVN?

Des idées?

Répondre

3

Je ne sais pas quelle version de Subversion vous utilisez, donc je vais essayer de me référer aux informations dans la version la plus récente du Subversion documentation, pour la version 1.6. (Ils ajoutent sur cette page que Mais il n'y a pas de version stable 1.6 « si vous signet ou un lien vers des sections spécifiques, ces liens peuvent être invalidés en continuant le développement. ».)

D'abord, le bad news:

pour utiliser un outil de fusion, vous devez soit définir l'environnement SVN_MERGE variable ou définir l'option outil de fusion-cmd dans votre fichier de configuration Subversion (voir la section intitulée « options de configuration » pour plus de détails) . Subversion passera quatre arguments à l'outil de fusion: la révision BASE du fichier, la révision du fichier reçu du serveur dans le cadre de la mise à jour, la copie du fichier contenant vos locales modifications, et copie fusionnée du fichier (qui contient des marqueurs de conflit). Si votre outil de fusion attend les arguments dans un ordre ou un format différent, vous devrez écrire un script wrapper pour Subversion à invoquer.

La meilleure nouvelle est que Subversion a quelque peu anticipé votre question. Voir la section Using External Differencing and Merge Tools; il existe des modèles d'enveloppes d'outils de fusion externes. Dans votre cas spécifique, le TortoiseMerge documentation a an appendix pour l'utiliser depuis la ligne de commande. Les commutateurs essentiels sont /base, /mine et /theirs, mais vous pouvez en utiliser plus (vous écrivez votre propre script wrapper, après tout). TortoiseMerge permet également une « forme simplifiée » de la commande:

TortoiseMerge BaseFilePath MyFilePath TheirFilePath 

La façon de communiquer les résultats de votre retour à la fusion Subversion est en écrivant le fichier fusionné sur la sortie standard et retourner une valeur appropriée. Cette information est placée en évidence dans les modèles de wrapper dans le manuel de Subversion.

+0

Merci. J'ai finalement trouvé que "Using External Differencing and Merge Tools" dans l'aide. –

3

Créer un script de chauve-souris qui ressemble à ceci:

"c:\Program Files\TortoiseSVN\bin\TortoiseMerge.exe" /base:"%1" /theirs:"%2" /mine:"%3" /merged:"%4" 

Ensuite, définissez la variable d'environnement SVN_MERGE à ce script de chauve-souris:

set SVN_MERGE=c:\bin\svnmerge.bat 
Questions connexes