Вход | Регистрация
 

Найти конкретную строку во всех изменениях git репозитория через GUI

Найти конкретную строку во всех изменениях git репозитория через GUI
Я
   TormozIT
 
09.07.21 - 07:56
Использую Visual Studio Code с расширением GitLens для анализа изменений в модулях конфигурации 1С в git репозитории.
Сегодня в очередной раз возникла задача найти конкретную строку во всех изменениях репозитория.
Код перемещался по модулям и методам в процессе развития конфигурации и немного менялся, но перемещения редко происходили с в одном коммите с изменением искомой строки.
Это можно сделать через GitLens или еще как то?
Нагуглить ответ пока не смог.
   TormozIT
 
1 - 09.07.21 - 07:58
Модератора прошу поправить тему на "Найти конкретную строку во всех изменениях git репозитория через GUI"
   ДенисЧ
 
2 - 09.07.21 - 08:01
   acht
 
3 - 09.07.21 - 08:02
(2) Ему, похоже, GUI важнее
   TormozIT
 
4 - 09.07.21 - 08:02
(2) Это я находил. Но там grep, а не GUI.
   acht
 
5 - 09.07.21 - 08:09
(4) Ну дык сделай следующий шаг и поищи grep gui.
Получишь кучку вариантов, типа https://github.com/bokuweb/vscode-git-grep
   TormozIT
 
6 - 09.07.21 - 08:24
Нашел эту команду в GitLens, но почему то иногда при открытии результатов такого поиска не происходит позиционирования на искомую строку и приходится жать клик и нажимать F3.
https://i.imgur.com/Gxw9tmn.png
   TormozIT
 
7 - 09.07.21 - 08:32
(5) Конкретно по твоей ссылке годный вариант, если с 1-2 попыток ты найдешь нужное место. Если же надо просмотреть много результатов, то будет уже неудобно.
Про поиск "GUI grep" направление перспективное. Спасибо.
   TormozIT
 
8 - 09.07.21 - 09:01
Не смог понять, как ввести в этом поиске строку "div|p|b" (не регулярное выражение) так чтобы нашлись все точные совпадения. Там режим регулярных выражений если отключаю, то находит миллион совпадений, как будто он включен.
https://i.imgur.com/SK7X1Mh.png
   LoneBull
 
9 - 09.07.21 - 09:16
(8) Чисто на шару - может попробовать экранировать?
Типа
div\|p\|b
   TormozIT
 
10 - 09.07.21 - 09:17
(9) Так работает, но в общем случае я буду искать и намного более длинные строки =)
   TormozIT
 
11 - 09.07.21 - 09:24
(8) Похоже на баг в GitLens. Буду делать писать разработчикам.
   TormozIT
 
12 - 10.07.21 - 08:38
Создал заявку в проекте gitlens для Visual Studio Code по поводу невозможности отключить поиск в формате регулярного выражения https://github.com/eamodio/vscode-gitlens/issues/1572
Поэтому задача все еще остается нерешенной - как найти конкретную строку (не шаблон, не регулярное выражение) по всем изменениям в репозитории? При этом операция будет многократной, поэтому какие либо ручные преобразования искомой строки не допускаются (как например в (9)).
   LoneBull
 
13 - 10.07.21 - 10:45
(12) Преобразование ведь можно сделать и не ручное - хоть обработку на предприятии написать, хоть ещё как.
Пару лишних кнопок нажать, да.

Но конечно лучше второй день страдать над этим, нужно же как-то развлекаться ;)
   TormozIT
 
14 - 10.07.21 - 11:07
(13) Тут я ищу удобное многократное (инструмент), а не разовое решение задачи. Зачем каждый раз делать какую то явную конвертацию, когда здравый смысл подсказывает, что должна быть готовая пользовательская команда? Ведь обычный поиск в VSCode ищет и регулярное выражение и точное совпадение (переключатель работает ожидаемо). Чем поиск по изменениям принципиально с точки зрения пользователя отличается от обычного поиска?
Вот если я не найду удобного способа, тогда уже будет оправдано использовать неудобный способ.
А неудобный способ пока такой
1. Преобразовать строку для поиска на точное совпадение через регулярное выражение с помощью https://regex-escape.com/regex-escaper-online.php
2. Искать преобразованную строку через gitLens в изменениях
   Asmody
 
15 - 10.07.21 - 11:24
(12) Сделал ишку - сделай и ПРку. Отличная возможность прокачать TypeScript и помочь хорошему проекту! :)
   Timon1405
 
16 - 10.07.21 - 11:44
git log -S 'word' не подходит?
   TormozIT
 
17 - 10.07.21 - 11:56
(16) Слово GUI в заголовке вроде написал.
   TormozIT
 
18 - 10.07.21 - 14:26
(15) Ну для начала не понял как отлаживать это расширение. Поковырялся минут 10 и сдался.
Кажется этот флаг отрабатывается тут
    export function toKey(search: SearchPattern) {
        return `${search.pattern}|${search.matchAll ? 'A' : ''}${search.matchCase ? 'C' : ''}${
            search.matchRegex ? 'R' : ''
        }`;
    }
https://github.com/eamodio/vscode-gitlens/blob/main/src/git/search.ts
   LoneBull
 
19 - 10.07.21 - 14:59
(18) Судя по тому что оно формирует через pipe (|) идут опции поиска, а его экранирование не предусмотрено (и поэтому в итоге опции не применяются)

Выглядит так как будто можно не разбираться и просто экранировать все спец.символы из search.pattern и возвращать результирующую строку уже экранированной.
Понятно что это костыль и PR с таким исправлением оформлять не стоит, но самому попользоваться наверное вполне можно.
   TormozIT
 
20 - 22.07.21 - 19:40
Так и не нашел способ без извратов поискать точное совпадение.
Сегодня потребовалось искать строку

МенеджерЗаписи = РегистрыСведений["ДополнительныеСведения"].СоздатьМенеджерЗаписи();

Опять пришлось искать через способ (14).
Удивлен, что вселенная до сих пор не смогла создать удобный инструмент для поиска по столь древнему механизму как git. В онлайн и оффлайн интерфейсе GitHub тоже не нашел подобной фичи.
   TormozIT
 
21 - 22.07.21 - 23:15
Попробовал еще несколько расширений для VSCode для работы с гитом. Все они заметно скромнее имеют фичи чем gitLens. Так что там и близко нет нужной фичи.

Еще попробовал программу "Source tree". Ее поиск даже не позволяет управлять режимом "регулярное выражение". Он даже по запросу

РегистрыСведений["ДополнительныеСведения"]

Нашел ничего.
https://i.imgur.com/3EehqlB.png
А вот по запросу

ДополнительныеСведения

уже нашел вроде правильные комитты, но показал их полный состав, не выделяя файлы с вхождениями и тем более не выделяя в них текст.
В общем тут поиск еще хуже чем в gitLens.

Так что gitLens пока удерживает позицию лидера.
   Yardman
 
22 - 23.07.21 - 07:32
(20) Вроде если в искомой строке нет "|" - должно и без экранирования нормально работать.
   Адинэснег
 
23 - 23.07.21 - 08:02
   Вафель
 
24 - 23.07.21 - 08:57
(22) а как же [ ] ?
   Вафель
 
25 - 23.07.21 - 08:59
Самый простой вариант для тс, дописать свой буфер менеджер, чтоб он умел копировать с экранированием


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.