Использование алгоритма слияния Subversion TortoiseSVN в проекте.NET
У меня есть целая куча пар файлов, которые имеют небольшие различия. Мы используем subversion для управления исходным кодом, и мне нравится утилита Merge/Diff, которая поставляется с TortoiseSVN для окон. И я могу использовать эту утилиту, чтобы вручную сравнить / объединить два файла вместе. У меня такой вопрос: как я могу программно объединить два файла так же, как это делает эта утилита (и игнорировать и помечать файлы, которые имеют конфликты)?
4 ответа
Я бы предложил использовать одну из библиотек.NET, которые поддерживают установленный алгоритм слияния, такой как предложенный в этом вопросе: Какой-нибудь приличный текстовый механизм сравнения / слияния для.NET?
Понятия не имею о качестве, я тоже наткнулся на это: http://razor.occams.info/code/diff/
Объединение двух файлов, в которых нет конфликта, без вмешательства человека, вероятно, не очень хорошая идея, если только вы не можете легко определить, что на самом деле представляет собой изменение, например наличие предыдущей версии обоих файлов (как это делает Subversion).
Например, с учетом следующих двух файлов, каков правильный порядок действий? (Столбец # - это номер строки, пробелы означают, что строки отсутствуют)
--- File #1 ------------------------ --- File #2 ------------------------
1 This is the first line 1 This is the first line
2 This is the second line 2 This is the second line
3 This is the third line
4 This is the fourth line 3 This is the fourth line
4 This is the fifth line
5 This is the sixth line 5 This is the sixth line
Итак, каков правильный результат здесь?
Несколько вариантов, о которых я знаю:
- Острый SVN, используемый поставщиком управления источниками ANKH для Visual Studio. Однако медленно захватывать репозитории
- DotSVN - ".Net порт Subversion"
- Если отклонение от Subversion не является проблемой, вы можете попробовать Google Diff Match Patch.
Я не уверен, что два проекта Subversion реализуют слияние, но я представляю, что это команда сервера. Различий не будет, и я бы порекомендовал Google для этого.
Я могу быть далеко от цели, если вы просто хотите автоматизировать черепаху.