Задний план
В Clearcase вы можете получить графическое дерево версий файла, введя следующую команду в терминале Linux.
ct lsvtree -gra <filename>
Это вызывает интерфейс с многочисленными параметрами для просмотра различий между двумя версиями файла.
Проблема
Из интерфейса графического дерева я пытаюсь найти, существует ли строка в любой версии файла. Эта строка была потеряна в какой-то момент, и я хочу понять, где находится эта «кто-то».
Вопрос
Как запустить текстовый поиск по всем версиям файла в чистом регистре?
Если вы используете динамические представления, вы можете воспользоваться тем, как он получает доступ к версиям элементов через расширенное имя версии. используя в качестве примера "foo.c@@/main/branch/1", у вас есть "foo.c@@" в качестве корень структуры каталогов, где "main" и "branch" являются подкаталогами, а "1" является "file "
Вы можете использовать это, выполнив следующие действия:
Например:
cd foo.c@@
grep -rl "target-string" *
чтобы получить файлы без строки:
cd foo.c@@
grep -rlv "target-string" *
Вы также можете использовать вывод lsvtree для поиска в скрипте, но приведенный выше способ — самый простой способ сделать это. Это работает в Unix и Windows, но вы можете захотеть использовать что-то отличное от стандартного Windows «findstr», если ваша целевая строка содержит несколько слов, так как findstr обрабатывает их странно: findstr "foo bar oof" будет печатать строки, содержащие «foo», «bar», или «oof», иногда даже когда используется / L для «буквального».
Если вы используете моментальные снимки или веб-представления, это намного сложнее, и вам потребуется скрипт для повторения вывода lsvtree.
Мне нравится подход к папке с расширенным путем динамического просмотра. Проголосовал. Мне никогда не удавалось успешно использовать его, но он может сработать.
Поскольку я упоминалось ранее (2015), в ClearCase нет эквивалента git log -S or -G
(поиск кирки).
Этот поиск кирки выполняется (в Git), чтобы указать на предыдущую версию, где была добавлена или удалена строка. Но: вам нужно будет написать эквивалентную функцию для ClearCase.
Поскольку cleartool lsvtree
показывает вам всю версию данного файла, вы можете, начиная с самой последней версии, выполнить cleartool annotate
, чтобы увидеть, когда и в какой версии была добавлена строка.
Если эта строка включает вашу строку, то эта версия будет актуальна.
Если самая последняя версия не включает вашу строку, повторите процесс с предыдущей версией (отметьте cleartool annotate
эту предыдущую версию, если она включает вашу строку).
Кроме того, если вы искали обратное — откуда строка «появилась» в версии, вы можете использовать «cleartool annotate», чтобы узнать это. Это эквивалент CC «git виноват» и сообщит вам самый последний источник каждого текстового блока. Сторонняя программа «Визуальные аннотации» IIRC перебирает несколько выходных данных аннотаций, чтобы дать вам ПЕРВЫЙ раз, когда появилась строка / блок текста. Я не связан с создателем инструмента, но решил упомянуть об этом.