Установите svn: externals в текущий локальный каталог

У меня следующая структура локальных папок:

Top-Level Checkout
|-Project1
|    -Project Specific Files
|
|-Project2
|    -Project Specific Files

Для чего я хочу добавить свойство svn: externals в Project1 для некоторых файлов .dll, которые находятся в моем репозитории.

Я использую TortoiseSVN для установки свойства (если это имеет значение, я не думаю, что это так). Я пытаюсь добавить определение svn: externals в папку Project1, чтобы мои файлы .dll загружались в эту папку, образуя следующую структуру

Top-Level Checkout
|-Project1
|    -Project Specific Files
|    -.dll1
|    -.dll2
|    -.dll3
|    -.dll4
|
|-Project2
|    -Project Specific Files

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

Например, если моя собственность выглядит так:

^/Some/Repository/Url "SomeFolder"

Он создаст SomeFolder под Project1 и поместит туда файлы .dll.

Если я сделаю это

^/Some/Repository/Url ""

Он жалуется, что он недействителен. Этот:

^/Some/Repository/Url "\"

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

Невозможно создать каталог 'Top Level Checkout\Project1\': неверное имя файла, имя каталога или синтаксис метки тома.

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

Наконец, я не пробовал устанавливать свойство externals на Top-level Checkout, частично потому, что я думаю, что он все равно скажет мне, что не может создать каталог, но в основном потому, что это не жизнеспособное решение для этого проекта.

Кто-нибудь знает, как это сделать?


person Brandon    schedule 08.05.2014    source источник
comment
Если вы не хотите возиться с расширенными функциями NTFS и хотите использовать только то, что предлагает SVN, вы должны либо принести полный каталог (который, по вашему мнению, вам не нужен), либо каждый файл отдельно (согласно Бену отвечать).   -  person Dialecticus    schedule 09.05.2014


Ответы (2)


ЕСЛИ эти файлы DLL находятся в одном репозитории, вы можете указать полное имя каждого файла, а не каталог, в который они будут помещены. Это называется «внешним файлом».

Итак, ваше правило будет выглядеть так:

^/Some/Repository/URL/file1.dll file1.dll
^/Some/Repository/URL/file2.dll file2.dll
# ...
# etc.
person Ben    schedule 08.05.2014

Я забыл добавить комментарии и прочее к этому вопросу.

Я прочитал кое-что из документации svn:externals и обнаружил, что в ней необходимо создать подпапку. Это нелепое ограничение для ИМО, но это то, что есть.

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

Также я оставляю этот вопрос без ответа, потому что решения проблемы пока нет.

person Brandon    schedule 27.06.2014
comment
Значит, это устаревшая информация. Вы можете делать внешние файлы пофайлово, используя внешние файлы. Внешние каталоги должны создавать подкаталог, потому что внешний каталог в основном создает новую независимую рабочую копию. Это также похоже на то, как работают субхранилища в таких системах, как Mercurial и Git. - person Ben; 27.06.2014
comment
Я не хотел указывать каждый файл отдельно. Это потребовало бы, чтобы я вносил изменения во внешний каждый раз, когда добавлялся новый файл. - person Brandon; 27.06.2014
comment
В любом случае вы должны это делать, если только вы не игнорируете строгий совет из документации SVN, в котором говорится, что вам следует использовать явные номера ревизий во внешних компонентах. - person Ben; 27.06.2014