Как мне выполнить текстовый поиск по всем версиям файла в открытом регистре? - PullRequest
1 голос
/ 10 апреля 2019

Фон

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

ct lsvtree -gra <filename>

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

Проблема

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

Вопрос

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

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

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

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

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

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

1 голос
/ 10 апреля 2019

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

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

  • cd to "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 для "literal".

Если вы используете снимки или веб-представления, это намного сложнее и потребует сценария для итерации вывода lsvtree.

...