Организация хранилища Subversion из тысяч элементов - PullRequest
1 голос
/ 13 мая 2009

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

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

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

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

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

Надеюсь, кое-что из этого имело смысл ... Заранее спасибо за вашу мудрость!

Ответы [ 2 ]

1 голос
/ 13 мая 2009

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

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

0 голосов
/ 13 мая 2009

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

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

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

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

...