Подтвердить что ты не робот

Рекурсивный svn propset

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

Структура файла, как показано ниже

D:>dir *.bob /s/b
D:\Source\key-test\test.bob
D:\Source\key-test\test2.bob
D:\Source\key-test\sub\test3.bob

свойства (нет)

D:>svn propget svn:keywords -R *.bob

попробуйте рекурсивный набор (примечание test3.bob отсутствует)

D:>svn propset svn:keywords "Author HeadURL Id Revision" -R *.bob
property 'svn:keywords' set on 'test.bob'
property 'svn:keywords' set on 'test2.bob'

измените на sub и убедитесь, что мы можем установить prop (ok)

D:>cd sub
D:>svn propset svn:keywords "Author HeadURL Id Revision" -R *.bob
property 'svn:keywords' set on 'test3.bob'

Кто-нибудь знает, что с -R, я также попробовал - recursive?

Приветствия,

адам

D:>svn --version
svn, version 1.6.6 (SlikSvn:tag/[email protected]) WIN32
   compiled Nov  3 2009, 15:31:43
4b9b3361

Ответ 1

Учитывая, что в документах есть двусмысленность относительно того, что -R делает (или не делает), как указано Gonzalo, я использовал этот командный файл вместо того, чтобы пытаться заставить svn делать то, что я хочу

D:>type applyProps.cmd
@echo off
for /r . %%X in (*.bob) do (
svn propset svn:keywords "Author Id HeadURL Revision" "%%X"
)

Ответ 2

На самом деле -R является рекурсивным. Например:

svn propset svn:eol-style 'LF' -R *

Это будет работать и во всех подпапках. Однако:

svn propset svn:eol-style 'LF' -R *.php

... будет работать только с php файлами в текущей папке, независимо от -R. Добавление:

svn propset svn:eol-style 'LF' -R */*.php

Будет работать над подпапками на один уровень вниз. Добавление дополнительных /-s приведет к другому уровню и так далее...

Я действительно не уверен, как указать (или если это возможно), чтобы он был отфильтрован на основе имени файла AND рекурсивным. Независимо от того, эксперименты не могут повредить, поскольку модификации являются локальными и всегда могут быть выброшены путем возврата...

Ответ 3

От svn help propset:

svn: keywords, svn: executable, svn: eol-style, svn: mime-type и
svn: свойства блокировки прав доступа не могут быть установленный в каталоге. Нерекурсивный поиск попытка потерпит неудачу, а рекурсивная попытка будет устанавливать свойство только на файл дочерних элементов каталога.

Ответ 4

Если ваш рабочий каталог находится под UNIX, вы также можете попробовать эту команду. Это работает для меня:

svn propset svn:keywords "Id" `du -a | cut -f 2 | grep -v "\.svn" | grep "\.bob$" | sed "s/ /[[:space:]]/g"`