Существует два подхода:
- Дисциплина
- Инструменты
По моему опыту, # 1 может вас пока только достичь.
Так что решение, вероятно, инструменты.В вашем случае препятствием является Subversion.Замените его DVCS, как Mercurial или Git.Это позволит каждому разработчику работать над собственной веткой без кошмаров о слиянии Subversion.
Время от времени разработчик будет отмечать функцию или ветку как «завершенную».Это время, чтобы объединить функциональную ветвь с основной ветвью.Вставьте это в «промежуточное» хранилище, которое наблюдает ваш CI-сервер.Сервер CI может затем извлечь последние коммиты, скомпилировать и протестировать их, и только если это пройдет, отправить их в главный репозиторий.
Итак, цикл такой: основной репозиторий -> разработчик -> постановка -> main.
Здесь есть много ответов, которые дают вам детали.Начните здесь: Рабочий процесс Mercurial для ~ 15 разработчиков. Должны ли мы использовать именованные ветви?
[РЕДАКТИРОВАТЬ] Таким образом, вы говорите, что у вас нет времени, чтобы решитьосновные проблемы в вашем процессе разработки ... я позволю вам догадаться, как это звучит для всех ...; -)
В любом случае ... Используйте hg convert
, чтобы получить репозиторий Mercurial из вашего дерева Subversion,Если у вас есть стандартные настройки, это не должно занимать много времени (просто потребуется много времени на вашем компьютере, но это происходит автоматически).
Клонируйте это репо, чтобы получить рабочее репо.Процесс работает так:
- Развивайся во втором клоне.Создайте ветки объектов для этого.
- Если вам нужны изменения от кого-либо, преобразуйте в первый клон.Извлеките это из своего второго клона (таким образом, у вас всегда будет «чистая» копия из Subversion на случай, если вы запутаетесь).
- Теперь объедините ветку Subversion (
default
) и вашу ветку функций.Это должно работать намного лучше, чем с Subversion. - Когда слияние будет в порядке (все тесты будут выполнены для вас), создайте патч из diff между двумя ветвями.
- Примените патч кместный заказ от Subversion.Следует применять без проблем.Если этого не произойдет, вы можете очистить местный заказ и повторить.Здесь нет шансов потерять работу.
- Зафиксируйте изменения в Subversion, конвертируйте их обратно в репо № 1 и потяните в репо № 2.
Звучит как много работы, нов течение недели вы придумаете сценарий или два для выполнения большей части работы.
Когда вы заметите, что кто-то нарушил сборку (тесты больше не выполняются для вас), отмените объединение (hg clean -C
) и продолжайте работу над рабочей веткой функций.
Когда ваши коллеги жалуются, что кто-то сломал сборку, скажите им, что у вас нет проблем.Когда люди начнут замечать, что ваша производительность намного лучше, несмотря на все скачки, которые вы должны совершить, отметьте, что «было бы намного проще, если бы мы поцарапали SVN».