В ClearCase, как я могу просмотреть старую версию файла в статическом представлении из командной строки?

Как можно просмотреть старую версию файла в статическом представлении?

Дан пустой файл (называется empty в этом примере) я могу подорвать diff показать мне старую версию:

    % cleartool diff -ser empty Файл @@/main/28

Это похоже на довольно уродливый хак. Я пропустил более простую команду? Есть ли более аккуратный способ сделать это?

(Я не хочу редактировать спецификацию конфигурации - это довольно утомительно, и я пытаюсь взглянуть на кучу старых версий.)

Пояснение: я хочу отправить версию файла на стандартный вывод, чтобы я мог использовать ее с остальной частью Unix (grep, sed и т. Д.). Если вы нашли этот вопрос, потому что вы ищете способ сохранить версию элемента в файле, см . ответ Брайана.

5 ответов

Решение

Я пытаюсь посмотреть на кучу старых версий

Я не уверен, если вы говорите о "связке старых версий" одного файла, "связке старых версий" из нескольких файлов.

Чтобы визуализировать несколько старых версий одного файла, простейшим способом является отображение его дерева версий (ct lsvtree -graph File), а затем выберите версию, щелкните ее правой кнопкой мыши и выберите Send To 'редактор, который принимает несколько файлов (например, Notepad++). В несколько кликов вы увидите эти старые версии.
Примечание: у вас должен быть CC6.0 или 7.0.1 IFix01 (7.0.0 и 7.0.1 не могут "отправить" в файл со следующим сообщением об ошибке " Access to unnamed file was denied ")

Но для визуализации нескольких старых версий различных файлов я бы рекомендовал динамическое представление и редактирование спецификации конфигурации этого представления (а не представления моментального снимка, с которым вы в данный момент работаете), чтобы быстро выбрать все эти старые файлы (возможно, через простое правило выбора типа ' element * aLabel ")


[Из комментариев:]

что за идиоматический способ "кошки" ранней ревизии файла?

Идиоматический путь - через динамическое представление (которое вы конфигурируете с точно такой же спецификацией конфигурации, как у существующего представления снимка).

Затем вы можете просмотреть (как в "изменить каталог на") различные расширенные пути файла.

Если вы хотите отследить все версии ветки файла, зайдите в:

cd /view/MyView/vobs/myVobs/myPath/myFile@@/main/[...]/maBranch
cat 1
cat 2
...
cat x

' 1 ',' 2 ',...' x это версия 1, 2, ... х вашего файла в этой ветке.


Для представления моментального снимка расширенный путь недоступен, поэтому ваш "хак" - это путь.

Тем не менее, 2 замечания здесь:

  • чтобы быстро отобразить все предыдущие версии файла снимка в данной ветке, вы можете набрать:

(однострочная версия для копирования-вставки, синтаксис Unix:)

cleartool find addon.xml -ver 'brtype (aBranch) &&! version (.../aBranch/LATEST) &&! версия (.../aBranch/0) '-exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'

(многострочная версия для удобства чтения:)

cleartool find addon.xml -ver 'brtype (aBranch) &&! версия (.../aBranch/LATEST) &&! версия (.../aBranch/0)" 
          -exec 'cleartool diff -ser empty "$ CLEARCASE_XPN"'
  • вы можете быстро получить выход немного лучше с

(однострочная версия для копирования-вставки, синтаксис Unix:)

cleartool find addon.xml -ver 'brtype (aBranch) &&! version (.../aBranch/LATEST) &&! версия (.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"' | ccperl -nle '$a=$_; $b = $a; $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g; вывести $ b, если $a =~/^>/'

(многострочная версия для удобства чтения:)

cleartool find addon.xml -ver 'brtype (aBranch) &&! версия (.../aBranch/LATEST) &&! версия (.../aBranch/0)" 
         -exec 'cleartool diff -ser empty "$ CLEARCASE_XPN"'
| ccperl -nle '$ a = $ _; $ b = $ a; 
               $ b = ~ s / ^> + \ s (?: file \ s + \ d +: \ s +)? // g;
               выведите $ b, если $a =~/^>/'

Таким образом, выход будет лучше.


" cleartool get "команда (страница руководства ), упомянутая ниже Brian, не делает stdout:

Команда get копирует только элементы файла в представление.

В системе UNIX или Linux скопируйте /dev/hello_world/foo.c@@/main/2 в текущий каталог.

cmd-context get –to foo.c.temp /dev/hello_world/foo.c@@/main/2

В системе Windows скопируйте \dev\hello_world\foo.c@@\main\2 в C:\build каталог.

cmd-context get –to C:\build\foo.c.temp \dev\hello_world\foo.c@@\main\2

Так что, возможно, чем, передавая результат в cat (или же type в Windows), вы можете сделать что-то с выводом cat (type) команда.

cmd-context get –to C:\build\foo.c.temp \dev\hello_world\foo.c@@\main\2 | type C:\build\foo.c.temp 

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

Статические представления имеют команду "ct get", которая делает именно то, что вы ищете.

cleartool get -to ~/foo File@@/main/28

сохранит эту версию файла в ~/foo,

[Переписано на основе первого комментария]

Все файлы в Clearcase, включая версии, доступны в структуре виртуального каталога. Я не очень знаком со статическими представлениями, но я верю, что они все еще проходят виртуальный фс; они просто обновляются по-другому.

В этом случае вы можете просто сделать:

   cat File@@/main/28

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

Если File является элементом Clearcase, и cat File работает, и представление установлено правильно, затем попробуйте:

cat File@@/main/28

(примечание: без ct shell- вам это не нужно, если вы уже на виду.)

Попробуйте набрать:

ct ls -l File

Если он показывает файл с расширенным именем, похожим на приведенное выше, то вы сможете отследить файл с использованием расширенного имени.

ct shell cat File@@version

Другие вопросы по тегам