Svn имеет команду `revert-all`?

159

Если я хочу отбросить все свои изменения и вернуться к коду, находящемуся в хранилище, я делаю следующее:

$ rm -fr *
$ svn up

Это достаточно просто, но мне интересно, есть ли одна команда, которая выполнит это, что-то вроде:

$ svn revert-all
Эрик Уилсон
источник
Кто использует -fr вместо -rf? Есть причина, по которой это произносится как rimraf, а не как rimfer.
Джимми Хоффа
@JimmyHoffa В чем причина?
Эрик Уилсон,
3
конвенция Уилсон! Соглашения, сэр! Без нашей дисциплины и культурных традиций мы всего лишь дикари! Я говорю, добрый день, сэр!
Джимми Хоффа
Смотрите также: stackoverflow.com/questions/239340/… | stackoverflow.com/questions/6204572/…
Сиро Сантилли 郝海东 冠状 病 六四 事件 法轮功

Ответы:

306

Вы могли бы сделать:

svn revert -R .

Это не удалит любой новый файл, не находящийся под контролем версий. Но вы можете легко написать сценарий оболочки для этого, например:

for file in `svn status|grep "^ *?"|sed -e 's/^ *? *//'`; do rm $file ; done
Хуан Карлос Муньос
источник
2
Добро пожаловать в SO, и спасибо за подробный ответ, поскольку svn revert -Rон не эквивалентен двум командам, которые я дал.
Эрик Уилсон
1
Для удаления всех файлов, которые не контролируются версиями в командной строке Windows, ответ здесь: stackoverflow.com/a/1502365/1385429
Кристиан Вестербик,
Пользователь mashzo указал (в уже удаленном ответе), что -Rфлаг может быть необходим, чтобы гарантировать, что неверсионные каталоги также будут удалены, как часть отбрасывания всех изменений. Подумайте о том, чтобы включить это в свой ответ, если это кажется вам подходящим.
Джереми Бэнкс
27

Есть команда

svn revert -R .

ИЛИ
вы можете использовать --depth = infinity, который на самом деле такой же, как указано выше:

svn revert --depth=infinity 

svn revertопасен по своей сути, поскольку его цель - отбросить данные, а именно ваши незафиксированные изменения. После того, как вы вернулись, Subversion не предоставляет способа вернуть эти незафиксированные изменения

bilash.saha
источник
7
-Rэквивалентно--depth=infinity
Майкл Берр
4
В вашем cmd "svn revert -R" отсутствует текущий каталог в синтаксисе .. это должно быть "svn revert -R".
Боддхисаттва
В настоящее время пост звучит как -Rвзаимоисключающий, --depth-infinityкогда это не так.
Анбизкад
@ahnbizcad Разве это не два точных синонима?
Nyerguds
Это моя точка зрения. Этот ответ заставляет звучать по-разному, когда это не так. «взаимоисключающий» = противоположность
синониму
17

Используйте рекурсивный ключ --recursive (-R)

svn revert -R .
Крис
источник
0

Чтобы восстановить измененные файлы:

sudo svn revert
svn status|grep "^ *M" | sed -e 's/^ *M *//'
Тейлор Хокс
источник
Я думаю, что мое изменение форматирования представляет то, что вы хотите. Откат, если вам не нравится. И спасибо, это хорошо, чтобы вспомнить плохие старые времена SVN ... :)
Эрик Уилсон