как подрывная деятельность сливается - PullRequest
2 голосов
/ 03 октября 2009

Я немного озадачен тем, как работает модель Subversion. Скажем, я и мой коллега извлекли один и тот же файл, но мы работаем в разных местах файла, будет ли Subversion просто объединить оба изменения?

Большую часть времени мы будем работать с файлами php и xml, означает ли это, что мы должны использовать модель по умолчанию subversions, а не блокировать файлы?

Ответы [ 4 ]

8 голосов
/ 03 октября 2009

Ситуация следующая:

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

Результат зависит от изменений. Если изменения внесены в разные разделы кода, объединение выполняется автоматически.

Если изменения перекрываются, Subversion сообщает вам, что файл конфликтует, и вам нужно решить:

  • вы сливаете вручную
  • вы перезаписываете последние изменения из репозитория своими изменениями
  • отменить изменения и работать с версией из репозитория

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

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

Правильно, если вы работаете над разными областями одного и того же файла, тогда Subversion может разобраться с этим. Только когда вы работаете с той же (или очень близкой) областью файла, вам придется иметь дело с конфликтами слияния.

1 голос
/ 03 октября 2009

Да, модель параллельного выпуска Subversion точно вам подойдет.

Если вы оба редактируете один и тот же файл, сценарий будет следующим:

Для первого файла, который фиксирует файл, поведение является простым. Файл обновляется в хранилище.

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

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

  2. Когда локальная копия была объединена, конфликты, если таковые имеются, должны быть разрешены вручную, и следует выполнить тестирование, чтобы подтвердить, что ваши изменения не конфликтуют.

  3. Когда с локальным кодом все в порядке, коммит обновит хранилище (в то время хранилище считало, что ваш локальный код был основан на последней версии.

1 голос
/ 03 октября 2009

Как сказал Фрэнк.

В этой теме также есть отличная статья. Возможно, он сфокусирован на гибком управлении версиями, но также должен помочь вам понять, как работает svn: http://www.infoq.com/articles/agile-version-control

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