Относительная ссылка на файл с SVN в Windows - PullRequest
1 голос
/ 08 декабря 2011

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

Если это было включеноUnix Я мог бы просто иметь каталог 'docs' на уровне равноправного каталога 'source' базы кода.Тогда отдельные проекты в дереве исходного кода могут ссылаться на документацию в дереве документов с помощью символических ссылок, а когда сборочная машина выполняет сборку, она просто извлекает исходный каталог и, таким образом, не тратит время на проверку ненужного каталога документов.

Однако, используя SVN в Windows, я не вижу никакого способа сделать это разумным образом, поскольку SVN не поддерживает символические ссылки в Windows, даже если в Windows они есть.

Единственный способ обойти этоДо сих пор было создано создание командных файлов в дереве исходных текстов, в которых используется cmd.exe и относительная ссылка на файл для открытия файлов документации в дереве документации.Это работает, но по какой-то причине я не могу положить палец на него, оставляя неприятный вкус во рту.

Кто-нибудь может придумать лучший способ добиться этого?

1 Ответ

0 голосов
/ 08 декабря 2011

После некоторых исследований я думаю, что у меня есть решение, использующее свойство externals.

Во-первых, используя свойство svn: external для ссылки на каталог в том же хранилище.Установите это в trunk / Proj1 для создания Proj1 / Docs, ссылающихся на содержимое DocsDir / Proj1Docs

../DocsDir/Proj1Docs Docs

Это создает отключенную дочернюю рабочую копию внутри Proj1 / Docs, которая ссылается на / DocsDir / Proj1Docs.Proj1 / docs должны , а не ранее существовать как часть внешней рабочей копии (что имеет смысл, поскольку это сделало бы ее частью двух рабочих копий одновременно).Если вы отредактируете содержимое Proj1 / Docs, то после выполнения статуса svn в рабочей «родительской» копии будут перечислены изменения дочерней рабочей копии, но вы должны будете зафиксировать изменения в дочерней копии отдельно.Что не имеет большого значения.

Во-вторых, используя свойство svn: external для ссылки на файл в том же хранилище.Установите это в trunk / Proj1 для создания Proj1 / Readme.txt, который ссылается на DocsDir / Readme.txt.

../DocsDir/Readme.txt Readme.txt

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

В обоих случаях машина сборки может выполнить

svn checkout --ignore-externals <path>

проверить нашу кодовую базу без всей громоздкой документации.

Может кто-нибудь увидеть проблему с этой стратегией?

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