Как я могу запускать обновления в SVN, не вызывая много конфликтов - PullRequest
0 голосов
/ 23 февраля 2009

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

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

Если начальный был

 import Class1

и я изменяю его на

import Class1
import Class2

в то время как другой член команды меняет код на

import Class1
import Class3

Subversion не объединит все три строки.

Я полагаю, это потому, что Subversion не знает о семантическом содержании кода, поэтому не может решить, когда это будет / не будет уместно сделать.

Еще один конфликт, который я получаю, это если я заменю

processA();
processB();

с:

if(x){
  processA();
  processB();
}

все это помечено как изменение, нет ли способа заставить его выделить тот факт, что только если (x) был добавлен выше / ниже. В таких случаях мне приходится анализировать все строки внутри нового блока и беспокоиться о том, чтобы пропустить небольшие изменения в строках внутри.

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

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

Ответы [ 3 ]

6 голосов
/ 23 февраля 2009

Поскольку SVN не знает о языках программирования, было бы очень опасно, если бы он попытался вывести семантическое значение из наборов изменений. Поэтому он может выполнять только относительно простые слияния (т. Е. Если файл изменился в двух совершенно разных областях).

Распространенным решением является использование небольших коммитов. Не держите большие изменения накапливаются. Совершать часто. Обновление часто.

1 голос
/ 23 февраля 2009

Старайтесь, чтобы разработчики работали над непересекающимися частями проекта, чтобы уменьшить проблемы слияния. Если разработчики пересекаются, поощряйте общение, чтобы избежать ошибок. Кроме того, старайтесь делать коммиты рано / часто, чтобы избежать массовых слияний, но не допускайте коммитов, которые делают вашу базовую линию невозможной для сборки. Помогает система непрерывной интеграции.

1 голос
/ 23 февраля 2009

Если вы часто регистрируетесь, вы все равно увидите большие изменения (например, в случае «если»), но вам не придется много слияния , чтобы сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...