2009-09-04 3 views
1

Представьте приложение с несколькими выпущенными версиями: V1.0, V1.1 и V1.2.Файлы, зависящие от версии

Теперь представьте один или несколько связанных файлов, которые зависят от версии, например руководство пользователя, функциональный набор тестов или техническая документация. В идеале эти файлы будут проверяться в версии вместе с самим приложением, так что легко просмотреть и/или просмотреть все файлы, относящиеся к определенной версии (например, запустить функциональные тесты как часть непрерывной сборки).

Проблема в том, что любой из этих файлов может потребоваться обновить, даже если код отсутствует. Например, мы могли бы обнаружить ошибки в руководстве пользователя V1.0, которое мы хотим исправить в интересах клиентов, которые все еще используют эту версию. Или мы можем улучшить освещение функциональных тестов для V1.2, чтобы обнаружить ошибки в этой версии до того, как наши клиенты сделают это. Соответственно, изменив эти файлы, как мы их передаем в управление версиями? Мы не выпускаем новые версии программного обеспечения, а только новые версии файлов, которые идут с ними.

FWIW, мы используем SVN.

+0

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

+0

Какая система управления версиями вы используете в настоящее время? –

+0

@Andrew: CLearcase способен на такое управление версией «3d». Это немного дорогой зверь. – skaffman

ответ

1

Я действительно не вижу проблемы.

Вы совершаете так часто, как вам нравится; то, о чем вы говорите, может привести к различным пересмотрам данных документов и сконденсировать их в один «выпуск». Вполне возможно сделать это, в зависимости от того, как вы строите. Вы можете просто обновить определенные вещи до определенных версий (по крайней мере, в SVN, вы можете, я не могу говорить для других систем (скажем, безопасный визуальный источник (бог вам помочь)]).

Если вы используете SVN, вас также может заинтересовать функция 'tagging'.

+2

Тег должен быть доступен только для чтения, если вы хотите обновить V1.0, но ствол - это V1.1, вам нужна ветка версии 1.0 для обновления, иначе вы рискуете вытащить V1.1 в V1.0. – si618

6

Если все, что связано с проектом (документация, функциональные тесты), копируется (разветвляется) при выпуске новой версии, то все, что вам нужно сделать, это обновить то, что вам нужно на ветке.

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

+0

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

+0

Обычно мы исправляем ошибку в ветви релиза и распространяем ее обратно в туловище; это намного проще, чем слияние с багажником и вишней, какие изменения необходимы. Я считаю, что это также лучшая практика, выдвинутая людьми типа управления версиями. – Chance

Смежные вопросы