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

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

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

    % cleartool diff -ser empty [email protected]@/main/28

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

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

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

Ответ 1

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

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

Чтобы визуализировать несколько старых версий одного файла, самым простым является отображение его дерева версий (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" )


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

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

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

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

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

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

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


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

Однако 2 замечания здесь:

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

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

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

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

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

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

cleartool find addon.xml -ver 'brtype(aBranch) && !version(.../aBranch/LATEST) && ! version(.../aBranch/0)' -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"' | ccperl -nle '$a=$_; $b = $a; $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g;print $b if $a =~/^>/'

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

cleartool find addon.xml -ver 'brtype(aBranch) && 
                               !version(.../aBranch/LATEST) && 
                               ! version(.../aBranch/0)' 
         -exec 'cleartool diff -ser empty "$CLEARCASE_XPN"'
| ccperl -nle '$a=$_; $b = $a; 
               $b =~ s/^>+\s(?:file\s+\d+:\s+)?//g;
               print $b if $a =~/^>/'

Таким образом, результат лучше.


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

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

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

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

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

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

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

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

Ответ 2

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

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

cleartool get -to ~/foo [email protected]@/main/28

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

Ответ 3

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

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

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

   cat [email protected]@/main/28

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

Ответ 4

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

cat [email protected]@/main/28

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

Попробуйте ввести:

ct ls -l File

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

Ответ 5

ct shell cat Файл @@version