Есть ли у Subversion аналог ссылок VSS? - PullRequest
3 голосов
/ 09 марта 2010

Я перемещаю хранилище кода Visual SourceSafe в Subversion и сталкиваюсь с проблемой.

Вот упрощенная схема нашего текущего дерева исходного кода (в VSS):

project_root\
  |-libs\
  |-tools\
  |-arch_1\
  |   |-include
  |   |-source
  |-arch_2\
      |-include
      |-source

Моя проблема в наших двух arch_ папках.Каждая папка arch_ будет построена для различной аппаратной архитектуры, но содержимое этих двух папок практически идентично.Файлы в arch_2 являются просто ссылками VSS на файлы в arch_1, за небольшим исключением.Работа обычно проверяется в папке arch_1 и из нее, и ссылки VSS гарантируют, что любой проверенный здесь код обновляется также в папке arch_2.

Перемещение в Subversion, есть ли что-нибудьчто будет вести себя как ссылки VSS?То есть есть ли способ иметь два файла в отдельных папках, магически связанных друг с другом, чтобы они всегда были синхронизированы друг с другом (изменения одного также влияют на другой)?

Примечание: Я знаю правильный ответ здесь, чтобы исправить систему сборки.Система сборки в этом проекте была собрана примерно десять лет назад, когда наша система компиляции / сборки не была достаточно умна, чтобы компилировать одну и ту же папку, полную исходного кода для двух разных архитектур.Благодаря make и обновленным компиляторам мы можем переписать систему сборки, чтобы устранить эту зависимость от двух параллельных исходных папок.Однако это займет время, которого у нас нет на данный момент (мы теряем нашу лицензию на наш VSS-сервер и вынуждены мигрировать в довольно короткие сроки).Я надеюсь найти решение этой проблемы в Subversion, потому что в настоящее время мы потратили бы гораздо больше времени на беспрепятственную миграцию, чем переписывание системы сборки (которая будет следующей в моем списке дел!).

Спасибо за вашу помощь!

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

Ответы [ 4 ]

2 голосов
/ 09 марта 2010

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

Посмотри еще раз. Subversion 1.6 поддерживает внешние функции на уровне файлов: http://subversion.apache.org/docs/release-notes/1.6.html#file-externals

2 голосов
/ 09 марта 2010

Вы можете добавить содержимое arch_1 как SVN Внешний в arch_2

Обновление

Внешние файлы поддерживаются с SVN 1.6

Внешние файлы

Начиная с Subversion 1.6 вы можете добавить внешний файл для вашей работы копировать с использованием того же синтаксиса, что и для папки. Тем не менее, есть некоторые ограничения.

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

URL для внешнего файла должен быть в тот же репозиторий, что и URL, файл внешний будет вставлен в; внешние файлы внутри репозитория не поддерживаются.

См. Также: Замечания к выпуску SVN 1.6

0 голосов
/ 09 марта 2010

Наиболее близким к этому в SVN будет использование Externals .

Внешние определения позволяют вам:

различные подкаталоги, поступающие из разных мест в хранилище, или, возможно, из разных хранилищ.

0 голосов
/ 09 марта 2010

Да, есть способ сделать это, по крайней мере, для каталогов. Эта функция называется externals http://svnbook.red -bean.com / ru / 1.0 / ch07s03.html давно, с тех пор как я пользовалась Visual Studio, но даже 10 лет назад ссылки на VSS по-прежнему работали лучше, чем SVN внешности. Однако внешние SVN являются функциональными. Как правило, лучше всего организовать свой проект в библиотеки (общий код в базовом каталоге), и тогда вы можете сделать так, чтобы проект использовал внешние библиотеки, вместо того, чтобы один проект был внешним по отношению к другому подкаталогу проектов. В конечном итоге SVN будет иметь внешние файлы и каталоги http://subversion.tigris.org/issues/show_bug.cgi?id=937

...