Командная строка для удаления всех файлов View-private ClearCase
Я ищу командную строку для удаления всех файлов и каталогов, связанных с представлением, из представления ClearCase в Windows. У меня также есть Cygwin.
script, доступный в этой статье, не совсем то, что я хочу, так как я работаю с большим количеством файлов и хотите удалить их все, не выбрав их.
Ответы
Ответ 1
Несколько замечаний:
-
ct lsprivate
отлично подходит для динамических просмотров, а не для снимков.
-
ct ls -rec -view_only
, а также ct lsprivate
также перечисляют файлы с извлеченными файлами... Я не уверен, что вы хотите удалить их...
Для перечисления личных файлов (только частные, а не захваченные вами, вы можете захотеть сохранить), вам нужно иметь команду, которая:
В этом списке перечислены все ваши личные файлы (пропущенные захваченные/затменные/извлеченные или не-частные, а также символические ссылки) в чистом виде Windows (не требуется внешняя зависимость оболочки).
Замените @echo "%i"
на del /F "%i"
, и они исчезли.
Обратите внимание на двойные кавычки вокруг% i, чтобы отображать/удалять правильные файлы с пробелами в их имени.
Также обратите внимание на отсутствие параметра cleartool -nxn, поскольку символические ссылки в противном случае были бы неразличимы, а файлы с закрытием-просмотром все равно не оформлялись.
Чтобы также избавиться от частных каталогов, сначала запустите команду с rmdir /S /Q "%i"
, а затем с помощью del /F "%i"
.
Ответ 2
В командной строке Windows DOS:
for /f "delims=" %f in ('cleartool lspriv -s -do -oth ^| sort /r') do @del /f /q "%f"
Ответ 3
Я знаю, что, вероятно, лучший способ, но я всегда возвращаюсь к этому:
ct lspriv | grep -v checkedout | xargs rm -rf
Ответ 4
Я всегда использовал:
ct lsprivate | xargs rm
Ответ 5
В Unix (динамические представления) одним очень эффективным методом удаления личных файлов просмотра является удаление представления. Сначала сохраните cspec. Также убедитесь, что в представлении нет проверок. Затем удалите его и заново создайте новый (одно имя, тот же cspec, одно и то же хранилище, но не личные файлы, пока вы их не создадите).
# With the view to be cleaned as your current view...
ct pwv -s > /tmp/viewname
viewname=$(</tmp/viewname)
ct catcs > /tmp/$viewname.cs
ct lsview -cvi | awk '{print $3;}' > /tmp/$viewname.vws
# The next line is the first dangerous line!
# It cancels all outstanding checkouts and removes the modified files
ct lsco -cvi -s -avo 2>/dev/null | xargs ct unco -rm # Or: xargs ct ci -nc
exit # Terminate the session in the view
viewname=$(</tmp/viewname)
rm /tmp/viewname
# The next line is the second dangerous line
ct rmview -tag $viewname
ct mkview -tag $viewname $(</tmp/$viewname.vws)
ct setcs -tag $viewname /tmp/$viewname.cs
rm /tmp/$viewname.cs
Все личные файлы исчезли - и вы минимизировали использование вашего диска.
Если вам повезло работать только с одним VOB, вы можете опустить параметр "-avo
" (все VOB). Переадресация '2>/dev/null
' теряет ошибки из недоступных VOB. У меня есть более 100 видимых, но недоступных VOB в моей среде, кроме дюжины или около того доступных, которые я действительно использую.
Обратите внимание, что если вы упаковываете это как "rebuild.view
" script, вы должны взять имя вида в качестве аргумента (работая извне представления - это не будет текущий вид), и тогда вы могли бы выполните очистку внутри представления, используйте другую опцию "lsview", чтобы получить необходимую информацию, и обычно уходите от временного хранилища в /tmp (хотя вам нужно кэшировать cspec где-то).
Еще одно замечание - вы хотели бы убедиться, что вы сделали ручную очистку, прежде чем позволить автоматическому освобождению. Например, не должно быть никаких проверок. В качестве альтернативы напишите script, чтобы отказаться от просмотра, если есть какие-либо проверки.
Ответ 6
Я закончил использование этой команды в Cygwin:
cleartool ls -recurse -view_only | sed -e 's:\\:/:g' | xargs rm -r
Команда sed необходима для изменения путей в стиле Windows, выводимых cleartool в пути в стиле Unix. Там, вероятно, более эффективная команда. Это вызывает много ошибок, потому что он удаляет каталог, а затем любые ранее найденные файлы типа "вид-частный" под этим каталогом не будут найдены rm. Но в конечном итоге вы получите правильный результат.
EDIT: VonC указывает, что это работает только с динамическими представлениями ClearCase
Ответ 7
-
В CLI Чтобы просмотреть приватные файлы представления, выполните приведенную ниже команду
for /F "usebackq delims=" %i in (`cleartool lspriv -s ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed"`) do @echo "%i"
-
Из CLI, выполненного ниже, для удаления личных файлов вида
for /F "usebackq delims=" %i in (`cleartool lspriv -s ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed"`) do del /F "%i"
-
Синхронизация представления с проектом:
В проводнике проекта выберите свойства потока, перейдите на вкладку "Вид", выберите свойства вида и нажмите "синхронизировать с проектом"
Ответ 8
как использовать команду cygpath вместо sed?
вы можете найти дополнительную информацию о cygpath.exe здесь:
текст ссылки
способ связать cygpath.exe с другими программами - использовать xargs.
пример: processA | xargs cygpath -u > my-path-in-unix-format.txt
Ответ 9
В чистых окнах вы можете сделать это:
for /F "delims=" %i IN ('ct lsprivate') DO rm -rf "%i"