Использование SVN отдельно или в небольших рабочих группах - подход рабочего процесса?
Я провел несколько месяцев, работая над веб-приложением, и мы подошли к стадии производства. Скоро пришло время расширить группу разработчиков на 1-3 человека.
У меня не слишком много опыта работы с SVN, но, очевидно, это выбор для большой части крупных компаний, поэтому я предполагаю, что плюсы SVN, без сомнения, перевешивают время, потраченное на коммит / check ins / check выходы и т. д.
В SVN рабочий процесс кажется немного более сложным, и хотя я прочитал " Управление версиями с помощью Subversion" от O'Reilly Media, и я пока не уверен, стоит ли использовать SVN по каким-либо причинам, кроме резервного копирования при разработке в одиночку или в небольшая (1-3 человека) рабочая группа?
Как ты делаешь это? Каков ваш рабочий процесс с контролем версий при работе в одиночку или в небольших рабочих группах?
Спасибо!
3 ответа
Как и любой SCM, это определенно не только резервное копирование.
- Вы можете пометить определенные выпуски, чтобы вы могли определить точку во всем вашем коде, который составляет выпуск.
- Вы можете управлять ветвями для разных одновременных выпусков, например, если вам нужно управлять исправлениями ошибок для выпуска при разработке новой версии вашего решения.
- Вы можете управлять несколькими разработчиками и использовать возможность слияния SVN для обработки одновременных изменений, так что ваши разработчики не наступают друг на друга, перезаписывают или стирают изменения друг друга.
Я не развиваюсь самостоятельно без SCM, не говоря уже о других разработчиках. Это основной инструмент в вашем наборе инструментов, с которым стоит познакомиться раньше, чем позже.
Каков мой рабочий процесс? Это зависит от команды и используемого СКМ.
- Если SCM хорошо это поддерживает (например, Git), я создам ветку для каждой ошибки / функции. SVN не так жарко при ветвлении, так что это может не применяться.
- Я регулярно проверяю / сливаю. Если вы делаете это не часто, кодовая база будет отклоняться от вашей рабочей кодовой базы, и последующее объединение станет более трудным. Кроме того, вы хотите, чтобы члены вашей команды имели представление о том, что вы делаете.
- Мой процесс непрерывной интеграции (например, я использую механизм непрерывной сборки, такой как TeamCity/Cruisecontrol/Hudosn) будет собирать / тестировать и, при желании, отмечать релиз после успешного цикла сборки / тестирования.
- Я создам ветку для окончательного выпуска и отработаю это для обслуживания после выпуска.
Нет, это не перебор. Контроль версий жизненно важен для программирования, независимо от того, является ли он одним, в маленькой или в большой команде. Это устраняет страх перед "неправильным" изменением, так как вы всегда можете вернуться к предыдущей ревизии. Он помнит, почему изменение было сделано с сообщениями фиксации. Он знает, что было изменено вместе. И многое другое
Там не так много, чтобы добавить к ответу Брайана. В качестве альтернативы вы можете взглянуть на распределенные системы контроля версий (DSCM), такие как Mercurial, Git или Bazaar. ИМХО, они идеально подходят для небольших групп разработчиков, очень просты в настройке, но, тем не менее, их можно масштабировать до больших проектов.
Хорошее вводное руководство по Mercurial, написанное Джоэлем Спольски, можно найти по адресу http://hginit.com/.