Как использовать Propset Subversion против URL?
-
27-10-2019 - |
Вопрос
Возможно ли манипулировать свойством подрывной деятельности, таким как 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
также.)
Решение
Нет. Изменение свойства в файле похоже на изменение самого файла - вам нужен рабочий каталог. Есть несколько команд подрывной деятельности, которые изменяют коммит, не требуя рабочей копии: svn cp
, svn mkdir
, а также svn delete
. Анкет Все остальное нуждается в рабочем каталоге, чтобы внести изменения.
Кстати, вы можете внести изменения в ревизия Свойства без рабочей копии. Свойства ревизии - это такие вещи, как комментарий Commit (SVN: log), идентификатор комитета (SVN: Author) и время Commit (SVN: Date).
Другие советы
Да, хотя это немного взломать; SVN Propedit может изменить цели URL:
svn propedit foo --editor-cmd "echo bar>" http://example.com/svn/myproject/trunk -m "Property changed"
Вы можете использовать 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 и обычно доступна через диспетчер пакетов Distribution. Например, Fedora 25 включает в себя в subversion-tools
упаковка. OpenCSW даже включает его в основной пакет подрывной деятельности.
Опираясь на Виллема Отличный ответ, вот пример, показывающий, как установить 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."