Эмуляция симлинкоподобного поведения в репозитории контроля версий - PullRequest
1 голос
/ 17 июля 2009

Предположим, у меня есть следующая (желаемая) структура папок:

*CommonProject
*Project#1
----> CommonProject(link)
*Project#2
----> CommonProject(link)

Где CommonProject - это местоположение источника, принадлежащего этому проекту, а CommonProject (ссылка) - это просто мягкая ссылка на основное местоположение. Если мы представим это как древовидное представление в визуальном клиенте, если я разверну Project # 1, я увижу CommonProject там как подкаталог, даже если файлы на самом деле там не хранятся.

Цель этого - включить следующее поведение:

Когда я извлекаю проект № 1, я получаю файлы, связанные с этим проектом, а также подпапку CommonProject, содержащую все его файлы (, как если бы Project # 1 содержал копию файлов в версии Контрольный репозиторий). Теперь, если бы я изменил файлы CommonProject внутри Project # 1 и отправил свои изменения в репозиторий, эти изменения были бы помещены в расположение CommonProject (на самом деле ни один файл не хранится локально в Project # 1 в репозитории). Теперь, если бы я должен был синхронизировать Project # 2, так как он также содержит символическую ссылку на CommonProject, он теперь получит мои обновления. По сути, дублирование файлов существует только на моем компьютере, но в репозитории есть только одна версия CommonProject.

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 17 июля 2009

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

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

0 голосов
/ 17 июля 2009

Возможно, вам было бы гораздо лучше просто хранить проекты в плоском каталоге (по 1 каталогу на проект, все на одном уровне) и использовать то, что вы собираете систему или IDE, - это связывать все вещи вместе.

...