2010-11-11 1 views
4

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

По существу, мы разрабатываем среду, содержащую множество сценариев и конфигураций, которые распространяются по многим виртуальным и физическим машинам. Создавайте скрипты, файлы конфигурации, двоичные файлы, зеркала RPM и т. Д., И в то время как каждый в своем собственном мире они в порядке, нам нужно каким-то образом объединить их в одну версию. В то время как в более крупном проекте кодирования я вижу, что это, по-видимому, просто будет обрабатывать папки в одном проекте SVN (как я понимаю, поэтому, вероятно, нет ...), эти thigns действительно не имеют ничего общего, а многие даже не кода , и будет просто находиться в SVN как владелец места, который я себе представляю. Таким образом, нет смысла «проверять» собранную массу данных, но каким-то образом необходимо связать номер версии верхнего уровня с 60 различными работами. Как и выше, это код, файлы конфигурации, rpm и т. Д.

Я изначально предполагаю, что мы будем использовать SVN для этого как-то, но, возможно, это неправильное предположение в первом случае. Однако из моего общего представления о требованиях, которые я могу себе представить, наличие реальных проектов в SVN, а затем проектов-оболочек, которые обновляются на cronjob (или другом триггере), чтобы ссылаться на самые последние версии SVN каждого проекта, перечисленные в файле метаданных внутри проект обертки. Если какой-либо проект в списке был изменен, то этот проект оболочки обновляется с новым файлом метаданных, который проверяется на нем. В свою очередь эти обертки обертываются другими обертками вплоть до одного мастер-проекта. Конечным использованием этой версии основного проекта является создание базовой линии проектов под ней, которые могут быть использованы с системами документирования и отслеживания изменений, а также с уровнем автоматизации.

Хотя я могу предусмотреть то, что я только что описал, он основан только на очень небольшом представлении о SVN и, вероятно, (надеюсь), отсутствует большая часть существования SVN (или git .... ??).

Я надеюсь, что это имеет смысл, извините, если это не так. Более чем счастлив попытаться прояснить что-либо.

Благодаря

Chris

EDIT: Для того, чтобы привести пример сортов отдельных вещей, которые мы должны охватывать:

  • Конкретной версия оборотов репозиториев CentOS, согласно определению время, которое было синхронизировано с сетью
  • Конфигурационные файлы Nagios, которые будут установлены в vm после установки пакетов Nagios
  • Сценарии Kickstart используется для создания виртуальных серверов
  • Сценарии, используемые для запуска развертывания систем
  • В Iptables наборы правил, применяемых к каждому типу виртуальной машины

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

[EDIT] Хорошо, все это сводится к тому, что я не очень понимаю, как управлять версиями svn. Поскольку номер ревизии является репозиторием, все проекты неявно покрываются ... никакой реальной работы не требуется для достижения того, что я хотел. Спасибо, и неудивительно, что я не имел никакого смысла никому другому.

ответ

1

Что вы хотите SVN Externals

+0

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

+0

Когда вы определяете внешний, вы можете определить, какую версию этого внешнего каталога вы хотите. Таким образом, вы можете объединить много проектов в один и сказать: «Эта система состоит из этих версий этих подпроектов». Разве это не то, что вы пытаетесь сделать? –

0

Я не уверен, что понял вопрос, но вы можете хранить много разных вещей в разных каталогах в SVN. Затем вы можете использовать функцию sparse directory для извлечения только частей репозитория.

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

То, что вы не можете сделать в SVN, имеет тот же файл, который представлен в двух разных местах. Таким образом, вы не можете хранить abc.config в каталоге верхнего уровня, а затем иметь представление этого точного файла в двух разных деревах каталогов. Однако вы можете сделать это, используя внешние.

+0

Опять же, речь идет не о том, чтобы собирать удаленные проекты в одном месте, но иметь некоторую форму иерархии, которая определяет дерево конкретных снимков, которые в совокупности определяют версию проекта во всех уникальных способах ее доставки. Речь идет о определении того, какие версии включают в себя установку виртуальной машины Linux, как промежуточное программное обеспечение, например. apache, на котором запускается VM, какие фрагменты кода и т. д. Создание каждого элемента отлично в своем собственном мире, но поскольку нам необходимо донести до наших разработчиков надежную согласованную серверную инфраструктуру, которая может быть точно такой же был 3 месяца назад и т. д. –

+0

вы хотите теги. После того, как вы создали дерево папок с файлами в них и передали их SVN в основной «багажнике», вы можете быстро и просто разветвить всю партию. Это очень экономично. Затем вы можете доставить разработчикам снимок всего, что было, когда вы создали ветку. Конечно, держать много филиалов в актуальном состоянии - другое дело. Если вы сохраняете образы VM в svn, вам может потребоваться альтернативный подход. – gbjbaanb