Можно ли отключить автоматическое объединение в Subversion? - PullRequest
19 голосов
/ 10 сентября 2008

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

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

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

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

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

Ответы [ 5 ]

13 голосов
/ 06 октября 2011

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

  1. В TortoiseSVN-> Настройки-> Общие-> Файл конфигурации Subversion нажмите кнопку редактирования.
  2. Измените раздел [helpers], добавив

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

    (обратите внимание на двойной обратный слеш)

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

      @type %9
      @exit 1
    
10 голосов
/ 10 сентября 2008

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

Как отключить «автоматическое слияние» в Subversion

Хитрость для svn.exe - настроить svn external diff tool на программу, которая будет постоянно зависать.

svn --diff-cmd=/bin/false

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

6 голосов
/ 10 сентября 2008

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

1 голос
/ 10 сентября 2008

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

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

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

0 голосов
/ 16 мая 2013

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

Помните, что такое Subversion: система контроля версий, а не идеально работающий инструмент для слияния кодов.

...