Настройка Subversion для совместной работы

У меня есть предыдущий опыт работы с git, но я новичок в Subversion. Мне поручено создать репозиторий для моей команды, но я не уверен, какой должна быть лучшая структура. (предложить мне вернуться к git здесь не сработает, потому что я в значительной степени застрял в Subversion, но я ценю ваш честный совет!)

Допустим, у меня есть три разработчика (Сэм, Том, Боб) в моей команде, каждому из которых нужна своя ветвь для разработки (и они подчиняются своей собственной ветке, чтобы они могли отслеживать свои собственные изменения и ревизии. Я вижу это как Обходной путь для факта, что Subversion не имеет возможности локальной фиксации, как у Git. Коммит в Subversion эквивалентен push в Git.). После этого они вносят свои изменения в тест, а затем в производство. Вот структура, которую я имею в виду:

MyProject
   /trunk
         /MyProject
   /branches
         /Test
         /Sam
         /Tom
         /Bob
   /tags

Вот рабочий процесс: В конце дня (или в течение дня) все разработчики извлекают изменения из тестовой ветви, а затем помещают свои изменения в тестовую ветвь и разрешают конфликты, если это необходимо. Для производственного обновления MyProject в транке объединится с веткой Test.

Давайте предположим, что разработчики регулярно вносят свои изменения в тестовую ветку, чтобы попытка слияния не вызвала катастрофический конфликт.

Вопросы:
1. Это хорошая структура для командного проекта Subversion?
2. Можно ли указать корень веток разработчиков на тестовую ветку? Поэтому при нажатии VisualSVN/Update ветка разработчика автоматически обновляется до заголовка тестовой ветки.

1 ответ

Просто (хаотичное) мышление

  • В /trunk MyProject - избыточный узел (только потому, что репозиторий предназначен исключительно для MyProject)
  • В ветвях для разработчиков + стабильный (транк) | нестабильный (тестовый) вы получите много слияний (таким образом - вы можете стать жертвой "Адского слияния" в любое время: вы можете попытаться избежать контекстных конфликтов, но конфликты дерева во время Вас ждут двунаправленные слияния между ветками разработки)
  • "Кошмар конца дня" (слияние с тестом + слияние с тестом) потребует строгой дисциплины, внимания и точности (и времени)
  • Для кратковременных задач (одиночных коммитов) "общая ветка" может быть как-то лучше
  • "Ветка на задачу" вместо "Ветка на разработчика" дает более понятное дерево репозитория и управляемую разработку + выпуск (с кратковременными ветвями, связанными с задачами, PM|TL может отслеживать состояние в любое время - сравнивайте его с "навсегда" ветки разработчика). Но это не будет (не должно) запрещать использование личных "полок" для любого WIP
  • Вместо использования промежуточной тестовой ветки для синхронизации разработчики могут захотеть использовать прямое слияние между ветвями по требованию (но в любом случае см. П.2).
Другие вопросы по тегам