2010-04-21 5 views
1

Я делаю в SVN слияния для отрасли, так и в одном из файлов я вижу это:Параметры добавления слияния SVN. WTF? Или как делать большие слияния?

GetQueryReferenceData(int sessionId, Int32 sessionId) 

Это означает, что инструмент слияния просто добавил еще один параметр, не задавая никаких вопросов. Представьте себе, был ли это вызов подстроки (0), а в другой ветви - подстрокой (0,2). Это совершенно другое поведение, как даже решить, какой из них выбрать? Хорошо, что это пришло во время компиляции.

Проблема в том, что она не будет отмечена как конфликт и будет автоматически объединена. Это очень опасное поведение, и если у вас нет роскоши иметь единичный тест для каждой строки кода - вы ввернуты.

Что я делаю неправильно и как делать большие слияния без слияния, помещая опасные изменения молча? Есть ли инструмент слияния, который не является агностиком языка?

Я использую Tortoise SVN.

ответ

1

Итак, я не знаком с интерфейсом TortoiseSVN, но если есть конфликт, стандартная утилита командной строки subversion сообщит вам о конфликтах и ​​позволит вам указать, какую версию («моя», «их») вы хотите для использования или хотите ли вы разрешить конфликты вручную. Обратите внимание, однако, что если слияние/обновление связано с разными разделами кода (чтобы не было конфликта), тогда ожидается, что все изменения (будь то изменение подписи или иначе) будут применены. Поэтому, вместо того, чтобы спрашивать, почему SVN объединил внесенные вами изменения, вы должны спросить, почему ваши разработчики решили изменить подпись в наборе изменений (поскольку SVN не несет ответственности за изменения, внесенные в набор изменений, только для версий этих изменений и для применения этих изменений в вашем рабочем каталоге по запросу).

Кроме того, если вы хотите, чтобы другие разработчики не пытались вытащить махинации и не вносили изменений в код, вы можете создавать различные «крючки», которые выполняются до или после фиксации, чтобы обеспечить компиляцию кода или выполнить какую-либо специальную проверку вы хотели бы сделать код и соответственно отклонить изменения.

+0

Изменения в кодах, подпись была всего лишь примером. Когда код сменяется автоматически с помощью инструмента слияния, он меня пугает, потому что, если есть противоречивая часть логики, которая находится на разных строках, она не будет отмечена как конфликт и будет просто слита. Это проблема. –

+0

@HeavyWave, тогда почему вы сливаетесь? Возможно, вы хотите запустить «svn diff», чтобы просмотреть список изменений перед их применением? –

+0

Если бы я проходил каждую строчку вручную, это потребовало бы меня навсегда. Возможно, есть инструмент слияния, который не так прост, как Tortoise SVN и не является агностиком языка. –

1

Без запроса могут быть разные вещи. Сначала вы не изменили этот файл локально или нет в конкретной области функции, потому что конфликт может произойти только в том случае, если вы изменили эту же строку. Никакой инструмент не укажет вам на такие изменения. Или, может быть, вы использовали опцию - прим. ... И, конечно же, вы должны иметь модульные тесты, чтобы сделать такую ​​ситуацию безопасной. Кроме того, инструмент управления версиями не будет лучше справляться с этой ситуацией, поскольку инструмент управления версиями не зависит от языка. Может быть, было бы неплохо использовать интеграцию IDE и объединиться внутри, возможно, поддержка будет лучше. И, конечно, перед тем, как совершить такую ​​вещь, вы можете проверить слияние с помощью svn diff (Проверить на наличие изменений).

Смежные вопросы