Svn вернет все изменения свойств
У меня есть рабочая копия svn, которую я попытался свернуть, чтобы слить пару недавних изменений. Я отменил слияние, пока не закончил, когда я передумал. Теперь моя рабочая копия содержит несколько тысяч "изменений" от обновлений до свойств, связанных с предками, для большинства файлов. У меня около 10 файлов с реальными изменениями кода, смешанных, в которых я не хочу, чтобы их разделить вручную.
Есть ли способ вернуть все изменения свойств, не влияя на изменения содержимого?
Ответы
Ответ 1
Оказывается, что Tortoise SVN может сделать это действительно красиво. В диалоговом окне фиксации вы можете сортировать "измененные" файлы по "статусу текста" или "статусу свойств". Я просто отсортировал по статусу текста, а затем вернул все "измененные" файлы с "нормальным" "статусом текста".
Ответ 2
svn revert `svn status | grep '^ M' | sed 's/^ M \+//g'`
Ответ 3
Если вы используете опцию '--depth empty', вы можете отменить изменения только для путей, явно указанных в командной строке, поэтому, если вы укажете все каталоги, у которых есть изменения свойств, но NONE из файлов, изменения содержимого которых вы хотите сохранить.
например. если у вас есть каталог "foo" с нежелательными изменениями свойств, но файл "bar" внутри "foo" , следующее должно сохранять моды в "bar", но возвращать изменения свойств на "foo" .
$svn revert --depth empty foo
Ответ 4
Вы можете отправить свои изменения, а затем вернуть изменения свойств из этой версии:
svn merge -c -REV -depth empty
где REV - это версия, в которой вы хотите вернуть изменения свойств
Ответ 5
Отменить все изменения свойств с помощью PowerShell.
> @(svn status) -match '^ M' | `
>>> % { ($_ -split 'M\s+')[1] } | `
>>> % { svn revert --depth empty $_ }
Кредит Джерома Яглая и TheJuice для общего подхода.
Обратите внимание, что символ backtick `
указывает на новую строку.
Ответ 6
Я бы просто скопировал/архивировал 10 файлов с реальным сменой кода в другом месте и просто svn revert -R
весь проект, а затем скопировал 10 файлов.