С SVN, как я могу удержать другого разработчика от перезаписи меня? - PullRequest
4 голосов
/ 10 марта 2010

Я не уверен, как это сделать. Я только начал использовать SVN в реальном проекте. У меня все работает правильно. Но я единственный, кто его использует. Теперь я хочу представить второго человека этому процессу.

Я скачал tortoisesvn на моей машине с Windows и сделал проверку основного багажника. Я могу отредактировать файл и зафиксировать мой новый файл. Все работает.

Теперь я хочу, чтобы второй парень сделал это, пока я что-то делаю. Обычно он может работать над другим файлом, и мы договариваемся о времени экспорта наших подтвержденных файлов на тестовый сервер (я так или иначе думал), но что, если мы работаем над тем же файлом? например, файл конфигурации. Может быть, нам обоим нужно это изменить. Как я могу (или он) не пускать в него другого, пока кто-то другой его меняет. Если один из нас отправит новое обновление, он сотрет то, что только что вставил один из нас. Не уверен, что здесь делать.

Ответы [ 5 ]

9 голосов
/ 10 марта 2010

С SVN цель не состоит в том, чтобы взять файл и сказать: «Это мое, не трогай его». Цель состоит в том, чтобы слить ваши изменения, когда вы оба закончите. Количество случаев, когда два человека действительно вносят несовместимые изменения, невелико, и когда они происходят, разработчикам необходимо собраться вместе, чтобы наилучшим образом объединить их, а не гонку за тем, кто первым получит блокировку файла.

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

6 голосов
/ 10 марта 2010

Нет, это ничего не сотрет.

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

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

2 голосов
/ 10 марта 2010

Похоже, вам нужно базовое понимание того, как работает SVN. Я предлагаю вам прочитать раздел Модели версий из книги .

2 голосов
/ 10 марта 2010

SVN имеет блокировки в том редком случае, когда вам нужно их использовать. Для получения более подробной информации обратитесь к разделу «Блокировка» книги SVN.

2 голосов
/ 10 марта 2010

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

...