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

Как вы возвращаете ТОЛЬКО каталоги в рабочей копии SVN?

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

Одно из моих SVN-приложений рекурсивно задает свойство SVN для каждого каталога в моей рабочей копии, но я хочу вернуть эти изменения, чтобы остановить его выделение и попытаться зафиксировать изменения свойств SVN. Простое изменение в соответствии с HEAD не работает.

Любые идеи? Я прочитал различные ресурсы SVN, но ни один из них, похоже, не справляется с этим краевым случаем.

4b9b3361

Ответ 1

Вы можете использовать find в сочетании с svn revert:

find . -type d | grep -v .svn | xargs svn revert

Это не коснется каких-либо файлов внутри каталогов, если вы не используете параметр -R (что эквивалентно --depth=infinity).

Ответ 2

Работает на всех платформах:

svn revert . --recursive

(Обратите внимание, что это приведет к возврату всего, а не только к каталогам.)

Ответ 3

Во-первых, сделайте копию вашей рабочей копии где-нибудь в безопасности.:)

Вы можете редактировать свойства на рабочих копиях svn, используя следующие команды:

REM Delete all mergeinfo properties recursively
svn propdel svn:mergeinfo -R

Ответ 4

В 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