Инструмент слияния, способный объединять конфликтующие изменения - PullRequest
1 голос
/ 23 октября 2009

В настоящее время я использую TortoiseSVN для слияния двух ветвей, и я обнаружил, что он недостаточно умен для обработки определенного слиарио слияния.

В одной ветке у меня есть метод:

MyMethod(parameter1, parameter2, parameter3)

В другой ветке у меня тот же метод, что и следующий:

MyMethod(parameter1, parameter2, parameter4)

TortoiseMerge замечает, что есть конфликт, но только дает мне возможность использовать один метод подписи или другой. Однако я действительно хочу объединить его в один метод со всеми четырьмя параметрами следующим образом:

MyMethod(parameter1, parameter2, parameter3, parameter4)

Единственный способ обойти этот конфликт в данный момент - это разрешить строку, чтобы присутствовали оба метода, а затем вручную перейти к файлу и исправить его после разрешения конфликта.

Это просто так или есть более умный инструмент слияния, который мог бы справиться с этим сценарием?

Ответы [ 5 ]

3 голосов
/ 23 октября 2009

Я не понимаю? Ваш проект не будет компилироваться или, что еще хуже, не будет работать правильно после слияния, потому что нужная сигнатура метода не находится ни в одной из веток. Разве это не опаснее конфликта? Возможно, я что-то упустил очевидное.

ИМХО TortoiseSVN (или, скорее, клиент SVN) делает все правильно, сообщая о конфликте, ему нужно вмешательство человека.

0 голосов
/ 15 июня 2016

Я уверен, что TortoiseSVN не справится с этим. В более широком смысле, любой другой текстовый инструмент слияния / сравнения не может: имейте в виду, что эти инструменты не зависят от языка, который вы используете, они не понимают ваш код семантически. Они просто делают сравнение "char by char", фактически не читая, как это делает компилятор, или не давая значения тому, что выражают эти символы.

В случае, если вы используете язык, на котором этот вид операции является несколько законным, возможно, вы можете проверить, есть ли что-то связанное с этим языком.

Что касается возможности редактирования во время слияния, TortoiseSVN действительно может это сделать.

0 голосов
/ 10 февраля 2010

Пока что я не нашел ни одного инструмента, который бы делал то, что я прошу автоматически. Это может даже не быть возможным. Но я нашел обходной путь, о котором я думал, что сообщу.

Я закончил тем, что установил выполняйте визуальное слияние , которое, как я обнаружил, имеет более приятное средство слияния, чем по умолчанию, предоставляемое tortoise svn. Одна из приятных особенностей, которые я обнаружил, но я не могу вспомнить, было ли слияние с черепахой, это то, что она позволяет видеть и редактировать объединенный результат. Таким образом, несмотря на то, что он не может автоматически объединить нужную строку, я могу редактировать конфликт на месте, вместо того, чтобы разрешать его неправильно и обновлять вручную после объединения.

0 голосов
/ 27 декабря 2009

AFAIK, в этих сценариях не может помочь инструмент слияния, кроме сообщения о конфликте

Вы хотите, чтобы инструмент объединил его в один вызов функции со всеми 4 параметрами.

MyMethod (параметр1, параметр2, параметр3, параметр4)

Здесь также возникает двусмысленность, помещать ли сначала параметр 3, а затем параметр 4 или наоборот.

0 голосов
/ 23 октября 2009

Araxis Merge популярен своей мощью. Лично мне нравится SourceGear DiffMerge , поскольку он более свободен.

...