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

Задний план

В Clearcase вы можете получить графическое дерево версий файла, введя следующую команду в терминале Linux.

ct lsvtree -gra <filename>

Это вызывает интерфейс с многочисленными параметрами для просмотра различий между двумя версиями файла.

Проблема

Из интерфейса графического дерева я пытаюсь найти, существует ли строка в любой версии файла. Эта строка была потеряна в какой-то момент, и я хочу понять, где находится эта «кто-то».

Вопрос

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
275
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы используете динамические представления, вы можете воспользоваться тем, как он получает доступ к версиям элементов через расширенное имя версии. используя в качестве примера "foo.c@@/main/branch/1", у вас есть "foo.c@@" в качестве корень структуры каталогов, где "main" и "branch" являются подкаталогами, а "1" является "file "

Вы можете использовать это, выполнив следующие действия:

  • cd на "foo.c@@"
  • Выполните поиск.

Например:

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.

Кроме того, если вы искали обратное — откуда строка «появилась» в версии, вы можете использовать «cleartool annotate», чтобы узнать это. Это эквивалент CC «git виноват» и сообщит вам самый последний источник каждого текстового блока. Сторонняя программа «Визуальные аннотации» IIRC перебирает несколько выходных данных аннотаций, чтобы дать вам ПЕРВЫЙ раз, когда появилась строка / блок текста. Я не связан с создателем инструмента, но решил упомянуть об этом.

Brian Cowan 10.04.2019 17:34

Мне нравится подход к папке с расширенным путем динамического просмотра. Проголосовал. Мне никогда не удавалось успешно использовать его, но он может сработать.

VonC 10.04.2019 18:37
Ответ принят как подходящий

Поскольку я упоминалось ранее (2015), в ClearCase нет эквивалента git log -S or -G (поиск кирки).

Этот поиск кирки выполняется (в Git), чтобы указать на предыдущую версию, где была добавлена ​​​​или удалена строка. Но: вам нужно будет написать эквивалентную функцию для ClearCase.

Поскольку cleartool lsvtree показывает вам всю версию данного файла, вы можете, начиная с самой последней версии, выполнить cleartool annotate, чтобы увидеть, когда и в какой версии была добавлена ​​строка. Если эта строка включает вашу строку, то эта версия будет актуальна.

Если самая последняя версия не включает вашу строку, повторите процесс с предыдущей версией (отметьте cleartool annotate эту предыдущую версию, если она включает вашу строку).

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