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

StackOverflow https://stackoverflow.com/questions/176858

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

    % cleartool diff -ser empty File@@/main/28

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

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

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

Это было полезно?

Решение

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

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

Чтобы визуализировать несколько старых версий одного файла, проще всего отобразить дерево его версий (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/myFile@@/main/[...]/maBranch
cat 1
cat 2
...
cat x

'1', '2', ... 'x" будучи версиями 1, 2, ...x вашего файла в этой ветке.


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

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

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

(однострочная версия для копирования-вставки, синтаксис 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"'
  • вы можете быстро получить результат, который станет немного приятнее с помощью

(однострочная версия для копирования-вставки, синтаксис 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" команда (справочная страница) упомянутый ниже Автор: Брайан не делайте стандартный вывод:

Команда 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top