Ответ 1
Вы можете использовать find
в сочетании с svn revert
:
find . -type d | grep -v .svn | xargs svn revert
Это не коснется каких-либо файлов внутри каталогов, если вы не используете параметр -R
(что эквивалентно --depth=infinity
).
Я хочу вернуть каталог и все подкаталоги в рабочей копии SVN, чтобы они соответствовали репозиторию, но я не хочу прикасаться к файлам внутри этих каталоги.
Одно из моих SVN-приложений рекурсивно задает свойство SVN для каждого каталога в моей рабочей копии, но я хочу вернуть эти изменения, чтобы остановить его выделение и попытаться зафиксировать изменения свойств SVN. Простое изменение в соответствии с HEAD не работает.
Любые идеи? Я прочитал различные ресурсы SVN, но ни один из них, похоже, не справляется с этим краевым случаем.
Вы можете использовать find
в сочетании с svn revert
:
find . -type d | grep -v .svn | xargs svn revert
Это не коснется каких-либо файлов внутри каталогов, если вы не используете параметр -R
(что эквивалентно --depth=infinity
).
Работает на всех платформах:
svn revert . --recursive
(Обратите внимание, что это приведет к возврату всего, а не только к каталогам.)
Во-первых, сделайте копию вашей рабочей копии где-нибудь в безопасности.:)
Вы можете редактировать свойства на рабочих копиях svn, используя следующие команды:
REM Delete all mergeinfo properties recursively
svn propdel svn:mergeinfo -R
В Windows из командной строки вы можете сделать это:
for /d /r %i in (*) do svn revert %i
Если вы вызываете это из командного файла, используйте %%i
. Сначала создайте резервную копию!
Эта команда грязная и будет проходить через все каталоги, даже немодифицированные, или те, которые не находятся под svn
. Вы можете использовать что-то вроде этого Ruby script для более чистого способа:
`svn st`.split("\n").grep(/^ M\s+(.*)/) { $1 }.find_all { |i| File.directory? i }.each do |i|
system "svn revert #{i}"
end