Командная строка для удаления всех файлов View-private ClearCase

Я ищу командную строку для удаления всех файлов и каталогов, связанных с представлением, из представления ClearCase в Windows. У меня также есть Cygwin.

Скрипт, ansible в этой статье , не совсем то, что я хочу, так как я работаю с большим количеством файлов и хочу удалить их все, не выбрав их.

Несколько замечаний:

  • ct lsprivate подходит для динамических просмотров, а не для снимков
  • ct ls -rec -view_only а также ct lsprivate также перечисляет файлы с извлеченными файлами … Я не уверен, что вы хотите удалить их …

Для enums личных файлов (только частные, а не захваченные вами, вы можете захотеть сохранить), вам нужно иметь команду, которая:

  • учитывает пробелы в названии
  • не перечисляет проверки или захваченные или затменные файлы или символические ссылки
  • работает как для моментальных снимков, так и для динамических представлений
  • (бонус) не зависит от внешних команд оболочки

    for /F "usebackq delims=" %i in (`cleartool ls -r ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed" ^| find /V "-->"`) do @echo "%i"

Это перечисляет все ваши личные файлы (пропускающие захваченные / затменные / извлеченные или не-частные, а также символические ссылки) в чистом виде Windows (для этого не требуется внешняя оболочечная зависимость).
Замените @echo "%i" на del /F "%i" и они исчезли.
Обратите внимание на двойные кавычки вокруг% i, чтобы отображать / удалять правильные файлы с пробелами в их имени. Также обратите внимание на отсутствие параметра cleartool -nxn, так как символические ссылки в противном случае были бы неразличимы, а файлы private-view не были бы оформлены в любом случае.

Чтобы также избавиться от частных каталогов, сначала запустите команду с помощью rmdir /S /Q "%i" а затем с del /F "%i" .

Под подсказкой Windows DOS:

 for /f "delims=" %f in ('cleartool lspriv -s -do -oth ^| sort /r') do @del /f /q "%f" 

Я знаю, что, вероятно, лучший способ, но я всегда возвращаюсь к этому:

 ct lspriv | grep -v checkedout | xargs rm -rf 

Я всегда использовал:

 ct lsprivate | xargs rm 

В Unix (динамические представления) одним очень эффективным методом удаления личных файлов просмотра является удаление представления. Сначала сохраните cspec. Также убедитесь, что в представлении нет проверок. Затем удалите его и заново создайте новый (одно имя, тот же cspec, одно и то же хранилище, но не личные файлы, пока вы их не создадите).

 # With the view to be cleaned as your current view... ct pwv -s > /tmp/viewname viewname=$( /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=$( 

Все личные файлы исчезли - и вы минимизировали использование вашего диска.

Если вам повезло работать только с одним VOB, вы можете опустить параметр « -avo » (все VOB). Переадресация ' 2>/dev/null ' теряет ошибки из недоступных VOB-файлов. У меня в моей среде более 100 видимых, но недоступных VOB, кроме дюжины или около того доступных, которые я действительно использую.

Обратите внимание, что если вы упаковываете это как rebuild.view « rebuild.view », вы должны использовать представление как аргумент (работая извне представления - это не будет текущий вид), и вы могли бы сделать очистку внутри просмотрите, используйте другую опцию 'lsview', чтобы получить необходимую информацию и, как правило, уйти от временного хранилища в / tmp (хотя вам нужно кэшировать cspec где-то).

Еще одно замечание - вы хотели бы убедиться, что вы сделали ручную очистку, прежде чем позволить автоматическому освобождению. Например, не должно быть никаких проверок. Кроме того, напишите сценарий, чтобы отказаться от просмотра, если есть какие-либо проверки.

Я закончил использование этой команды в Cygwin:

 cleartool ls -recurse -view_only | sed -e 's:\\:/:g' | xargs rm -r 

Команда sed необходима для изменения путей в стиле Windows, выводимых cleartool в пути в стиле Unix. Вероятно, есть более эффективная команда. Это вызывает много ошибок, потому что он удаляет каталог, а затем любые ранее найденные файлы типа «вид-частный» под этим каталогом не будут найдены rm. Но в конце вы получите правильный результат.

EDIT: VonC указывает, что это работает только с динамическими представлениями ClearCase

  1. Из CLI Чтобы просмотреть список личных файлов вида, выполните следующую команду:

     for /F "usebackq delims=" %i in (`cleartool lspriv -s ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed"`) do @echo "%i" 
  2. Из CLI, выполненного ниже, для удаления личных файлов вида

     for /F "usebackq delims=" %i in (`cleartool lspriv -s ^| find /V "Rule:" ^| find /V "hijacked" ^| find /V "eclipsed"`) do del /F "%i" 
  3. Синхронизация представления с проектом:
    В проводнике проекта выберите свойства streamа, перейдите на вкладку «Вид», выберите свойства вида и нажмите «Синхронизировать с проектом»,

как насчет использования команды cygpath вместо sed?
вы можете найти дополнительную информацию о cygpath.exe здесь:
текст ссылки

способ связать cygpath.exe с другими программами – использовать xargs.
пример: processA | xargs cygpath -u> my-path-in-unix-format.txt

В чистых windowsх вы можете сделать это:

 for /F "delims=" %i IN ('ct lsprivate') DO rm -rf "%i" 
  • Шоколадная установка Cygwin продолжает зацикливаться на сайтах?
  • Хорошая альтернатива Cygwin с копией / вставкой?
  • cygwin g ++ std :: stoi "error: 'stoi' не является членом 'std
  • Как установить MinGW-w64 и MSYS2?
  • Запись вывода «tail -f» в другой файл
  • Как смонтировать образ NTFS, созданный GNU NTFSclone в Windows?
  • Cygwin fstab - что я делаю неправильно?
  • При запуске X удаленно через Cygwin, почему мои шрифты уродливые
  • Переход в каталог с использованием переменных bash не работает, если имена каталогов имеют пробелы
  • Cygwin: PS1 не может обернуть строки в одной строке (2)
  • '\ r': команда не найдена - .bashrc / .bash_profile
  • Давайте будем гением компьютера.