Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > УП: Инструменты > Работа с ветвями SVN


Автор: xTr1m 24.6.2009, 16:12
Доброго времени суток. Я хотел бы знать, правильно ли я понимаю работу ветвей. Имеем исходники проекта в папке Project1->trunc. 
Есть необходимость исправить кучу багов в одном из модуле проекта (предположим папка Project1->trunc->Module1) и одновременно продолжать наращивать функционал данного модуля.
Мы делаем ветвь Project1->brunches->brunche_01_01_2009->Module1 и поручаем программисту А исправлять баги, а программисту В наращивать функционал. Таким образом,
программист А работает в Project1->brunches->brunche_01_01_2009->Module1, а программист В рабоатет в Project1->trunc->Module1. Потом, когда программист А заканчивает работу, мы сливаем ветвь с основным проектом.

А что будет, если оба программиста затронут одни и те же куски кода? Или тут необходимо самому четко разграничивать полномочия?

Автор: Daevaorn 24.6.2009, 16:25
Цитата(xTr1m @  24.6.2009,  17:12 Найти цитируемый пост)
Я хотел бы знать, правильно ли я понимаю работу ветвей

Да. Такой вариант workflow вполне распространен.
Цитата(xTr1m @  24.6.2009,  17:12 Найти цитируемый пост)
А что будет, если оба программиста затронут одни и те же куски кода? 

Будет конфликт.
Цитата(xTr1m @  24.6.2009,  17:12 Найти цитируемый пост)
Или тут необходимо самому четко разграничивать полномочия? 

Это невозможно сделать на 100% да и не нужно. Конфликты это вполне рабочий процесс.

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

Автор: xTr1m 24.6.2009, 17:03
Спасибо за ответ. 

Автор: bilbobagginz 26.6.2009, 02:37
Цитата(xTr1m @  24.6.2009,  16:12 Найти цитируемый пост)
А что будет, если оба программиста затронут одни и те же куски кода? Или тут необходимо самому четко разграничивать полномочия? 

в общем да, желательно, но есть ещё механизм lock.
допустим программер A был первым, кто захотел работать над файлом A.cpp
он запускает команду:
Код

svn lock http://myserver/svn/branches/mybranch/path/to/A.cpp

другой программер Б не сможет закоммитить свои изменения, пока A не откроет замок:
Код

svn unlock http://myserver/svn/branches/mybranch/path/to/A.cpp

всё это "при желании" можно обойти, но идея в том, чтобы программисты не были заинтересованы в порче работы других.


а вообще для таких дел именно и придумали git ;-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)