2009-05-13 2 views
1

Прежде чем начать: я долгое время занимал много форумов (включая Stack Overflow - и да, есть много SO вопросов по организации svn), поиска Google и чтения документов (У меня есть несколько книг Subversion). Я до сих пор не нашел хорошего способа организовать нашу базу кода в Subversion. В настоящее время мы используем RCS в качестве нашей системы контроля версий, а все хранится в 1 каталоге RCS. Ужасно, я знаю - вот почему я работаю над чем-то лучшим. Я также использовал Subversion много, поэтому я знаю, что это возможности и как это работает. Я не решался задавать этот вопрос в течение нескольких месяцев, поскольку он не полностью связан с программированием, но поскольку я не смог прийти к решению, то, что лучше, чтобы задать мой вопрос!Организация репозитория из субверсии тысяч элементов

Что усугубляет ситуацию в моей голове - это термин подрывной деятельности «Проект». Если я хочу управлять проектом java в подрывной деятельности, это имеет для меня смысл: все файлы java, которые объединены в файл jar, можно рассматривать как «Проект» - все они принадлежат друг другу. Однако в нашей среде я не вижу простого способа определить, что такое «проект». У нас более 4000 программ, и все они в значительной степени независимы друг от друга. Многие из них являются сценариями оболочки или perl-скриптами. Некоторые из наших скриптов используют общие сценарии «утилиты» или «библиотеки», но по большей части все объекты кода являются независимыми.

Один «проект» в нашей среде может включать в себя программы A, B и C и конфигурационный файл AA. В другом проекте могут использоваться программы C, D и E и файл конфигурации BB. Еще один проект может просто изменить конфигурационный файл AA или, возможно, программу B. Нет способа классифицировать, какие программы или файлы принадлежат группе. Из-за этого - я понятия не имею, как организовать наш код в подрывную деятельность. Я мог бы поместить все в магистральный проект, но затем проверка рабочей копии означает проверку всех 4000 элементов.

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

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

Надеюсь, некоторые из них имели смысл ... Спасибо заранее за вашу мудрость!

ответ

1

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

Таким образом, вы можете создать «реальный» каталог для каждого компонента, а затем создать отдельный каталог для каждого проекта, который будет использовать внешние для проверки необходимых компонентов.

+0

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

+0

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

+0

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

0

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

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

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

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

+0

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

+0

Группа по общему закрытию. Это было хорошо описано в принципах Object Mentor объектно-ориентированного дизайна. Вещи, которые меняются вместе, нужно сгруппировать. –

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

  • Нет связанных вопросов^_^