Как использовать propset Subversion против URL? - PullRequest
10 голосов
/ 11 января 2012

Можно ли манипулировать свойством subversion, таким как svn:externals, только через URL?(т.е. без рабочей копии.)

Мне нужен сценарий, который прикрепляет svn:externals к определенной ревизии с учетом URL подрывной деятельности, но это кажется невозможным:

$ svn propset foo bar https://example.com/svn/myproject/trunk
svn: Setting property on non-local target 'https://example.com/svn/myproject/trunk' needs a base revision

$ svn propset foo bar -r HEAD https://example.com/svn/myproject/trunk
svn: Try 'svn help' for more info
svn: Cannot specify revision for setting versioned property 'foo'

$ svn propset foo bar --revprop -r HEAD https://example.com/svn/myproject/trunk
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'foo': 
could not remove a property

(Я получаю те же результаты, если я использую фактический номер ревизии вместо HEAD.)

Ответы [ 4 ]

9 голосов
/ 30 июля 2013

Да, хотя это немного взломано; svn propedit может изменять цели URL:

svn propedit foo --editor-cmd "echo bar>" http://example.com/svn/myproject/trunk -m "Property changed"

5 голосов
/ 04 марта 2017

Вы можете использовать команду svnmucc для неинтерактивного задания свойств URL, таких как svn:externals.

Пример:

$ svnmucc --root-url https://example.com/svn -m 'reference other/yap' \
   propset svn:externals "^/otherproject/tag/xyz other
^/yetanother/tag/123 yap" myproject/trunk

Обратите внимание, что svnmucc также поддерживает другие команды, кроме propset, и возможно объединить несколько команд в один вызов (отсюда и имя). Результатом является всего одна ревизия.

Команда svnmucc является частью пакета источника subversion и обычно доступна через менеджер пакетов дистрибутива. Например, Fedora 25 включает его в пакет subversion-tools. OpenCSW даже включает его в основной пакет subversion.

4 голосов
/ 11 января 2012

Нет.Изменение свойства файла похоже на изменение самого файла - вам нужен рабочий каталог.Существует несколько команд Subversion, которые изменяют коммит, не требуя рабочей копии: svn cp, svn mkdir и svn delete.Все остальное нуждается в рабочем каталоге для внесения изменений.

Кстати, вы можете вносить изменения в свойства * revision без рабочей копии.Свойствами редакции являются такие вещи, как комментарий коммита (svn: log), идентификатор коммиттера (svn: author) и время фиксации (svn: date).

0 голосов
/ 18 сентября 2015

Основываясь на превосходном ответе Виллема , вот пример, показывающий, как установить SVN auto-props для needs-lock для всех файлов и mime-type для определенных расширений с использованием URL:

svn propedit svn:auto-props --editor-cmd "echo \"* = svn:needs-lock=*
*.os = svn:mime-type=application/octet-stream
*.osproj = svn:mime-type=application/octet-stream\" >" http://example.com/svn/myproject/trunk -m "Setting auto-props."
...