Верстка SVN - лучшая практика

В CVS мы работаем над несколькими каталогами. Существует ночная сборка, которая должна извлекать вещи из разных каталогов в одном и том же проекте CVS для сборки ночной сборки. Так что я должен иметь это в виду, и мне нужно изменить скрипт сборки, чтобы проверить вещи из разных репозиториев, если мы перейдем в SVN.

Я прочитал соответствующий SVN QA, но у меня есть свой вопрос, ответ на который мне нужен.
Я могу сделать:

/trunk
/tags
/branches
/3rdparty

Там, где все, что мы разрабатываем, выходит из / trunk, а любая третья сторона, которую мы не меняем, переходит в / 3rdparty.

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

Все мои базы покрыты?

5 ответов

Решение

В данном руководстве SVN содержится много информации о макетах для различных типов проектов и о том, как ими управлять.

Вы также можете использовать крючки / триггеры / внешние данные для извлечения данных из независимого репо, называемого "третья сторона". Поэтому, когда разработчик проверяет один репо, он также получает третью часть. Существует множество способов отделить интересы, но представить единый репо из компонентных.

Удачи

Возможно, стоит использовать сборочный двигатель, такой как Hudson или круиз-контроль. Рабочий процесс немного отличается - теги создаются после сборки, но вы можете получить дополнительные модули, которые дадут вам некоторый контроль над этим. Дело в том, что вся работа для разработчиков сделана для вас, и вы получите достойную основу для ваших ночных сборок, и вы получите хороший веб-интерфейс для контроля и мониторинга всего.

Лично я бы добавил некоторые внешние определения в ствол, чтобы вставить соответствующие сторонние библиотеки в соответствующие места. Таким образом, когда вы изменяете версию сторонней библиотеки, вы вносите изменения в trunk и не должны изменять скрипты сборки. Это также означает, что вы можете создавать более старые версии, просто проверяя соответствующий ствол / тег / ветку. Имейте в виду - просто делайте их на стволе, разбрасывание вокруг может привести к убийству.

Я также наложил бы слой на репо примерно так:

project
 /trunk
 /branches
 /tags
3rdparty

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

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

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

Я не уверен в том, чтобы пометить то, о чем вы говорите. Вы имеете в виду номер версии? Если это номер версии, передайте этот сценарий и пометьте сборку.

Если "несколько каталогов" являются отдельными компонентами, для которых вы хотите создавать версии независимо, то вы должны иметь каждый в своем репозитории, чтобы они могли быть помечены отдельно. Но если это все отдельный автономный проект (т. Е. Если вы обычно помечаете и разветвляете все компоненты вместе), то вы, вероятно, можете поместить весь код в один и тот же репозиторий.

Вы должны рассмотреть возможность использования внешних устройств для сторонних артефактов.

Мой сценарий проверяет транк, изменяет файлы (корректирует номера версий в файлах AssemblyInfo.cs и т. Д.), А затем отмечает это. Если вам не нужно каким-либо образом изменять файлы, то сначала будет полезно добавить теги.

Кроме этого, твоя установка звучит хорошо для меня, по крайней мере.

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