SVN: очистить / удалить нетронутые копии из командной строки
6108
hardmooth
Как я могу очистить / удалить все нетронутые копии рабочей копии из командной строки?
Случай использования:
Я проверил несколько рабочих копий (более 20) (такой же случай для многих разработчиков в нашей фирме)
некоторые из этих рабочих копий со временем становятся большими
Когда на диске недостаточно места, мне нужно вручную очистить каждую рабочую копию, как описано в этом ответе (предварительно проверяя, какие рабочие копии занимают большую часть дискового пространства)
Бонус: вычислить (оценить?) Дисковое пространство, занимаемое нетронутыми копиями, и вызывать очистку только в том случае, если это приведет к ... освобождению ГБ.
Это утомительно и подвержено ошибкам, поэтому я хотел бы автоматизировать эти 20+ очисток в vacuum_pristine_copies.XXXсценарий, который может быть выполнен в час крайней необходимости.
вложенная этикетка
Можно позвонить cleanupиз командной строки (см. Документы здесь ). Тем не менее, это не хватает /vacuum-pristineварианта. (Мы уже используем эту TortoiseSVN-автоматизацию для пакетных обновлений).
Мы работаем на машинах Windows, но мы не зациклены CMD. Одной из возможных альтернатив может быть Python27.
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