Какую стратегию ветвления я должен использовать во время разработки / обслуживания веб-приложения?

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

На мой взгляд, существуют две основные стратегии ветвления: «переход по выпуску» и «переход по функции».

«Переход по выпуску» : Развитие происходит на магистрали. Когда время для выпуска близко, для этого выпуска сделана ветка. Затем эта ветвь стабилизируется / тестируется, и, наконец, выпускается релиз. После выпуска ветка снова объединяется с основной веткой, при этом ветка выпуска остается активной для исправления ошибок. Применяется ли исправление ошибки, затем оно объединяется в ствол (если развитие ствола не затмило ошибку другими способами). Новые функции добавляются в магистраль и не влияют на ветку выпуска. When a new release time nears, a new release branch is created a.s.o.

"Branch by feature": The trunk is always the "production" trunk (the code that is live). Bugfixes are commited directly to the trunk. Features for the next release are developed in feature branches.Bugfixes are merged from time-to-time into the feature branches. When release time comes, the features branches are merged into the trunk and the cycle of life continues.

Now the way I see it the big practical difference between these two strategies is that "by release" allows you to maintane different production versions of you software ( when client A has version 1 and client B version 1.5, client is the paying customer in this case). In contrast using the "by feature" strategy you can only support the current production version ( all clients are using latest version).

Since in a typical web application all clients are using the same "latest" version (since they all access the same server), I would assume that the "by feature" approach is the most commonly used. It removes the need to merge "across the hierarchy", say when a bugfix has to be applied to all 3 release versions.

So my current status is that I should go with "branch by feature". If it matters, my team is not very skilled.

11
задан durron597 20 July 2015 в 18:00
поделиться