Ответ 1
Когда я искал, как это сделать, я нашел этот пост бесценным: http://blogs.msdn.com/jmanning/articles/535573.aspx
Первоначально возник вопрос: "Как настроить WinMerge как инструмент сравнения и слияния для TFS". Однако я меняю его, потому что TehOne ответил на эту более общую форму вопроса.
Я бы хотел, чтобы это уже было задано в Stackoverflow. Я нашел ответ в другом месте, но я спрашиваю/отвечаю здесь. Теперь это сообщество wiki.
Когда я искал, как это сделать, я нашел этот пост бесценным: http://blogs.msdn.com/jmanning/articles/535573.aspx
Длительная процедура предоставляется в в блоге Rory Primrose
Короткий ответ - это список аргументов для сравнения:
/x /e /ub /wl /dl %6 /dr %7 %1 %2
и список аргументов для слияния:
/x /e /ub /wl /dl %6 /dr %7 %1 %2 %4
Иногда Winmerge не возвращает 0 и TFS будет считать, что слияние было отменено. Для слияния необходимо использовать следующий пакетный файл оболочки:
@rem winmergeFromTFS.bat
@rem 2007-08-01
@rem File created by Paul Oliver to get Winmerge to play nicely with TFS
@rem
@rem To use, tell TFS to use this command as the merge command
@rem And then set this as your arguments:
@rem %6 %7 %1 %2 %4
"C:\Program Files\WinMerge\WinMerge.exe" /x /e /ub /wl /dl %1 /dr %2 %3 %4 %5
exit 0
И затем вы установите список аргументов:
%6 %7 %1 %2 %
выход 0
Для SourceGear DiffMerge вам необходимо изменить командную строку по умолчанию:
C:\Program Files (x86)\SourceGear\Vault Client\sgdm.exe
Я нашел параметры в этой теме на форумах поддержки SourceGear, а также в блоге Джеймса Мэннинга, упомянутом @TehOne, но приведенные здесь аргументы являются некорректными и приводят к тому, что авто-слияние выполняется в обратном порядке, то есть старый код перезаписывает новый код. Правильные аргументы:
/m/t1 =% 6/t2 =% 7/t3 =% 8/c =% 9% 1% 3% 2/r =% 4