Подтвердить что ты не робот

Могу ли я отключить автоматическое слияние в Subversion?

Мы смотрим на переход от стиля проверки/редактирования/проверки системы контроля версий к Subversion, и во время оценки мы обнаружили, что при выполнении действия Update в TortoiseSVN (и предположительно в любом клиенте Subversion?), если изменения в репозитории, которые должны применяться к файлам, которые вы редактировали, не вызывают конфликтов, тогда они будут автоматически/беззвучно объединены.

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

Очень простой пример: я работаю в методе С#, изменяя некоторую логику в последней части метода, а кто-то другой изменяет значение, которое инициализируется переменной в начале метода. Другое изменение человека не в строках кода, над которым я работаю, поэтому конфликт не будет; но можно резко изменить выход метода.

То, что мы надеялись, будет состоять в том, что если произойдет слияние, тогда будут показаны два файла и, по крайней мере, будет представлен простой вариант accept/reject change, так что, по крайней мере, мы знаем, что что-то изменилась и предоставляется возможность увидеть, влияет ли это на наш код.

Есть ли способ сделать это с помощью Subversion/TortoiseSVN? Или мы слишком сильно застреваем в наших нынешних рабочих способностях и должны просто позволить этому сделать это...

4b9b3361

Ответ 1

Лучший способ обойти это - обучить разработчиков. После того, как вы сделаете обновление в TortoiseSVN, вы увидите список затронутых файлов. Просто двойной щелчок по каждому файлу даст вам разницу между ними. Затем вы сможете увидеть, что изменилось между вашей версией и последней версией репозитория.

Ответ 2

Это в FAQ: Как я могу запретить Subversion выполнять автоматические слияния?

  • В файле конфигурации TortoiseSVN- > Settings- > General- > Subversion нажмите кнопку редактирования.
  • Измените раздел [helpers], добавив

      diff-cmd = "C:\\false.bat"
    

    (обратите внимание на двойную обратную косую черту)

  • Создайте файл C:\false.bat, который содержит две строки

      @type %9
      @exit 1
    

Ответ 3

Вот трюк для TortoiseSVN:

Как отключить "авто-слияние" в Subversion

Trick для svn.exe - установить svn инструмент внешнего разграничения на программу, которая будет постоянно терпеть неудачу.

svn --diff-cmd=/bin/false

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

Ответ 4

Я бы посоветовал вам научиться работать с естественной моделью Subversion, если это вообще возможно. На практике мы обнаруживаем, что конфликты встречаются редко, а тип логики конфликтует, о чем вы говорите почти о несуществующем (я не могу вспомнить экземпляр за последние 4 года в нашем репозитории).

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

Если вас беспокоит какое-то конкретное изменение, которое вы делаете, Subversion предоставляет механизм блокировки, чтобы вы могли предотвратить другие изменения в файле. См. Главу Красная книга на locking.

Ответ 5

Вот почему автоматическое (единичное) тестирование является фундаментальной частью разработки распределенного программного обеспечения. В приведенном ниже примере хотя бы один unit test должен завершиться неудачей при обновлении svn и предупредить вас об ошибке.

Помните, что такое Subversion: система управления версиями, а не инструмент для слияния с совершенным рабочим кодом.