У меня есть Git репозиторий. Я хочу найти конкретные строки, которые я написал.

Например, я хочу видеть все мои строки с текстом: TODO, todo, FIXME, fixme.

Я знаю о git grep, но в нем показаны строки всех авторов. Но я хочу видеть только мое TODO.

Я использую IDEA, но у него нет фильтра в TODO по автору.

Я запутался. Кто-нибудь может мне помочь?

UPD IDEA: интеграция VCS для TODO сейчас невозможна

1
Yura Shinkarev 22 Мар 2017 в 11:01

2 ответа

Лучший ответ

Вы можете попробовать эту простую команду, использовать git grep для получения результата, затем использовать awk, чтобы разделить результат, внутри awk, использовать grep blame для получения дополнительной информации, наконец, использовать { {X4}} для фильтрации вывода.

$ git grep -n "TODO" | awk -F: '{system("git blame -f -L "$2","$2" "$1)}' |grep "The Author Name"
2
alijandro 22 Мар 2017 в 08:53

Не точный ответ:

Вы можете посмотреть созданный вами коммит (где вы были автором), и где diff представил новый "TODO":

git log --author="My Name" -S TODO -p

Второй способ может быть:

  • найти файлы с тегом TODO
  • запустить git blame для каждого из этих файлов
  • и сохраняйте строки с флагом TODO и там, где вы упоминаетесь как автор

Что-то вроде :

# get file list :
grep -r . -i -E "(TODO|FIXME)" -l   > list.txt
# check each file :
cat list.txt | while read file; do
    git blame $file | grep "My Name" | grep -i -E (TODO|FIXME)
done

Обратите внимание, что если кто-то еще отредактировал строку (например, переопределил ее), git blame упомянет имя этого другого человека как автора.
И наоборот: если вы изменили такую строку, ваше имя будет отображаться в выводе git blame.


Если имя автора не указано в строке TODO, вы должны пересечь содержимое файла вместе с историей файла в git - чтобы иметь возможность соответствовать автору этой строки. IDE должна была бы выполнять такую же работу.

Дело в том, что это трудно (если не невозможно) сделать это точным образом: обычно есть коммиты, которые переписаны в истории git (rebase, squash, ...), и хотя git пытается сохранить автора коммита, когда это имеет смысл, иногда «оригинальный» автор коммита может быть потерян.

0
LeGEC 22 Мар 2017 в 09:01