SVN: очистить / удалить нетронутые копии из командной строки

6093
hardmooth

Как я могу очистить / удалить все нетронутые копии рабочей копии из командной строки?

Случай использования:

  • Я проверил несколько рабочих копий (более 20)
    (такой же случай для многих разработчиков в нашей фирме)
  • некоторые из этих рабочих копий со временем становятся большими
  • Когда на диске недостаточно места, мне нужно вручную очистить каждую рабочую копию, как описано в этом ответе (предварительно проверяя, какие рабочие копии занимают большую часть дискового пространства)
  • Бонус: вычислить (оценить?) Дисковое пространство, занимаемое нетронутыми копиями, и вызывать очистку только в том случае, если это приведет к ... освобождению ГБ.

Это утомительно и подвержено ошибкам, поэтому я хотел бы автоматизировать эти 20+ очисток в vacuum_pristine_copies.XXXсценарий, который может быть выполнен в час крайней необходимости.

вложенная этикетка

  • Можно позвонить cleanupиз командной строки (см. Документы здесь ).
    Тем не менее, это не хватает /vacuum-pristineварианта. (Мы уже используем эту TortoiseSVN-автоматизацию для пакетных обновлений).
  • Мы работаем на машинах Windows, но мы не зациклены CMD.
    Одной из возможных альтернатив может быть Python27.
1

2 ответа на вопрос

4
dotn3b

Для TortoiseSVN этот параметр или параметр /vacuumуказаны разработчиком в электронном письме . Как вы указали, в настоящее время это отсутствует в документации.

SVN 1.8 ввел в команду автоматическую очистку нетронутой части, cleanupа 1,9 сделал ее и другие функции необязательными. Источник: SVN changelog .

Моя проблема с `TortoiseProc.exe / command: cleanup / вакуум ...` заключается в том, что он открывает диалог для каждого рабочего каталога. Я бы предпочел сценарий огня и забыть. `svn cleanup` почему-то не уменьшает размер рабочего каталога (> 6 ГБ), в то время как запуск очистки TortoiseSVN (<4 ГБ). hardmooth 8 лет назад 0
@hardmooth Как упоминалось в документации по автоматизации TSVN, которую вы связали, вы сможете скрыть диалог с помощью `/ noui`,` / noprogressui` и / или `/ nodlg`. Что касается стандартного клиента ** SVN **: я могу получить из исходного кода 1.9.4 то, что вы не должны указывать `--remove-unversioned` или` --remove-ignored`. Термин _vacuum_ используется не только в отношении «очистки вакуума», но и в том, что касается удаления неверсионных или игнорируемых файлов, что, IMHO, вызывает некоторую путаницу в коде и, по-видимому, его реализацию. Также убедитесь, что указанный вами путь является корнем WC. dotn3b 8 лет назад 0
Первая ссылка не работает, возможно, [эта тема] (https://groups.google.com/forum/#!topic/tortoisesvn/D_xNVYO1mlk) содержит ту же информацию. Синтаксис "no ui" будет выглядеть примерно так: `TortoiseProc.exe / command: cleanup / noui / cleanup / вакуум / externals / refreshshell / noprogressui / path: .` (оставьте путь к` .` для текущей папки или измените при необходимости курс). Следует отметить, что эта команда не блокирует, то есть она просто запускает процесс и сразу же возвращается, поэтому выполнение этого в цикле for внутри пакетного сценария может создать много фоновых процессов. Groo 6 лет назад 0
1
hearst

Для svn до 1.10 вы просто набираете "svn cleanup" без каких-либо параметров. Svn автоматически пропустит чистоту после завершения очистки.

Для svn 1.10 (возможно, позже), вы вводите указанную выше команду вместе с --vacuum-pristines (svn cleanup --vacuum-pristines), и svn сделает то же самое для вас. Но вы можете добавить и другие параметры, и svn выполнит их все в одной команде. Например, («очистка svn - удалить-неверсированный - удалить-игнорировать --vacuum-pristines»)

Конечно, как и в старых версиях, тип "svn cleanup" без каких-либо параметров будет также пылесосить его в 1.10.

`svn cleanup --vacuum-pristines` выдает (SVN 1.9.3) ошибку` svn.exe: неверный параметр: --vacuum-pristines` hardmooth 6 лет назад 0
Я сказал вам, что --vacuum-pristines доступно только для SVN v1.10 или выше, не могли бы вы проверить мои слова более тщательно? hearst 6 лет назад 0
Да вы сделали! Моя ошибка - я читаю `1.1.0` вместо` 1.10`. hardmooth 6 лет назад 0