Использование алгоритма слияния Subversion TortoiseSVN в проекте .NET - PullRequest
3 голосов
/ 11 января 2010

У меня есть целая куча пар файлов, которые имеют небольшие различия. Мы используем subversion для управления исходным кодом, и мне нравится утилита Merge / Diff, которая поставляется с TortoiseSVN для окон. И я могу использовать эту утилиту, чтобы вручную сравнить / объединить два файла вместе. У меня такой вопрос: как я могу программно объединить два файла вместе, как это делает эта утилита (и игнорировать и помечать файлы, которые имеют конфликты)?

Ответы [ 4 ]

2 голосов
/ 11 января 2010

Я бы предложил использовать одну из библиотек .NET, которые поддерживают установленный алгоритм слияния, такой как предложенный в этом вопросе: Любой приличный текстовый механизм сравнения / слияния для .NET?

Понятия не имею о качестве, я тоже наткнулся на это: http://razor.occams.info/code/diff/

2 голосов
/ 11 января 2010

Это может помочь: Автоматизация TortoiseMerge

0 голосов
/ 11 января 2010

Объединение двух файлов, где нет конфликта, без вмешательства человека, вероятно, не очень хорошая идея, если только вы не можете легко определить, что на самом деле представляет собой изменение, например, наличие предыдущей версии обоих файлов (как это делает 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

Итак, каков здесь правильный результат?

0 голосов
/ 11 января 2010

Несколько вариантов, о которых я знаю:

  • Sharp SVN , используемый поставщиком контроля источника ANKH для Visual Studio. Однако медленно захватывать репозитории
  • DotSVN - '. Сетевой порт Subversion'
  • Если отклонение от Subversion не является проблемой, вы можете попробовать Diff Match Patch от Google .

Я не уверен, что два проекта Subversion реализуют слияние, но я представляю, что это команда сервера. Различия не будет, и я рекомендую Google для этого.

Я могу быть не в порядке, если вы просто хотите автоматизировать черепаху.

...