Использование SVN отдельно или в небольших рабочих группах - подход рабочего процесса?

Я провел несколько месяцев, работая над веб-приложением, и мы подошли к стадии производства. Скоро пришло время расширить группу разработчиков на 1-3 человека.

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

В SVN рабочий процесс кажется немного более сложным, и хотя я прочитал " Управление версиями с помощью Subversion" от O'Reilly Media, и я пока не уверен, стоит ли использовать SVN по каким-либо причинам, кроме резервного копирования при разработке в одиночку или в небольшая (1-3 человека) рабочая группа?

Как ты делаешь это? Каков ваш рабочий процесс с контролем версий при работе в одиночку или в небольших рабочих группах?

Спасибо!

3 ответа

Решение

Как и любой SCM, это определенно не только резервное копирование.

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

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

Каков мой рабочий процесс? Это зависит от команды и используемого СКМ.

  1. Если SCM хорошо это поддерживает (например, Git), я создам ветку для каждой ошибки / функции. SVN не так жарко при ветвлении, так что это может не применяться.
  2. Я регулярно проверяю / сливаю. Если вы делаете это не часто, кодовая база будет отклоняться от вашей рабочей кодовой базы, и последующее объединение станет более трудным. Кроме того, вы хотите, чтобы члены вашей команды имели представление о том, что вы делаете.
  3. Мой процесс непрерывной интеграции (например, я использую механизм непрерывной сборки, такой как TeamCity/Cruisecontrol/Hudosn) будет собирать / тестировать и, при желании, отмечать релиз после успешного цикла сборки / тестирования.
  4. Я создам ветку для окончательного выпуска и отработаю это для обслуживания после выпуска.

Нет, это не перебор. Контроль версий жизненно важен для программирования, независимо от того, является ли он одним, в маленькой или в большой команде. Это устраняет страх перед "неправильным" изменением, так как вы всегда можете вернуться к предыдущей ревизии. Он помнит, почему изменение было сделано с сообщениями фиксации. Он знает, что было изменено вместе. И многое другое

Там не так много, чтобы добавить к ответу Брайана. В качестве альтернативы вы можете взглянуть на распределенные системы контроля версий (DSCM), такие как Mercurial, Git или Bazaar. ИМХО, они идеально подходят для небольших групп разработчиков, очень просты в настройке, но, тем не менее, их можно масштабировать до больших проектов.

Хорошее вводное руководство по Mercurial, написанное Джоэлем Спольски, можно найти по адресу http://hginit.com/.

http://hginit.com/i/05-complex.png

Другие вопросы по тегам