В 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
Если он показывает файл с расширенным именем, похожим на приведенное выше, то вы сможете отследить файл с использованием расширенного имени.