Как проверить внешний URL-адрес SVN напрямую?
У меня есть хранилище Subversion, которое содержит некоторые клиентские файлы. Некоторые клиенты будут использовать стандартные файлы, но другие клиенты будут предоставлять собственные версии файлов. Для этого я использовал svn: externals для клиентов, которые будут использовать общие файлы. Итак, наша структура примерно такая:
svn
|+ top
|+ shared
|+ clients
|+ custom1
|+ custom2
|+ shared1
|+ shared2
Клиент "custom1" - это реальная папка в Subversion, содержащая пользовательские файлы этого клиента, а клиент "shared1" - это свойство svn: external в /clients
папка, которая указывает на /top/shared
,
Я надеялся, что когда я захочу развернуть новый клиент, я смогу просто экспортировать его папку на сервер, используя такую команду:
svn export http://svn/top/clients/custom1 \\server\custom1
или же
svn export http://svn/top/clients/shared1 \\server\shared1
Это хорошо работает для настроенных клиентов, потому что у них есть "настоящая" папка в Svn, но для клиентов, настроенных с внешними данными, я получаю ошибку:
svn: E170000: URL 'http://svn/top/clients/shared1' doesn't exist
Есть ли способ, которым я могу проверить / экспортировать "внешнюю" папку напрямую?
2 ответа
http://svn/top/clients/shared1
это не физический путь в SVN, а просто ссылка на ваш внешний. Вот почему вы не можете проверить это напрямую.
Чтобы избавиться от этого, вы можете создать http://svn/top/clients/shared1
как пустую папку в SVN, и вы можете дать свойство svn:external на http://svn/top/clients/shared1
папка, чтобы указать это на /top/shared
вместо /clients
папка.
После этого вы получите физический путь для проверки, но вам не нужно хранить фактический контент в этой папке.
В итоге я использовал svn ls, чтобы проверить, получаю ли я доступ к физическому каталогу. Если он не существует, используйте следующую команду, чтобы получить цель моего внешнего:
svn propget svn:externals http://svn/top/clients/ | findstr "\<shared1\>" | sed "s/\(.*\)\s\(shared1\)/\1/"
findstr
получит единственную строку для свойства, которое я ищу, и sed
Команда будет анализировать целевой URL (часть перед пробелом).