Используйте git для отображения TODO в коде, отсортированном по дате введения

Я хотел бы отобразить список всех TODO, которые есть в моем коде, но отсортированы с использованием истории (Git) и сначала показаны самые последние.

Вроде как результат, показанный здесь: git - порядок фиксирует введение "TODO" по дате

Но показаны строки TODO, а не хэши.

Должно выглядеть так:

Fri May 22 11:22:27 2015 +0200 - // TODO: Refactor this code
Fri Apr 25 17:32:13 2014 +0200 - // TODO: We should remove this when tests pass
Sat Mar 29 23:11:39 2014 +0100 - // TODO: Rename to FooBar

Я не думаю git log Я могу это показать, но я не уверен, и у меня нет возможности Git CLI, чтобы самому в этом разобраться. Любая идея?

2 ответа

Решение

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

git ls-tree -r -z --name-only HEAD -- . | xargs -0 -n1 git blame -c | grep TODO | sort -t\t -k3

Это работает следующим образом:

  • git ls-tree -r -z --name-only HEAD -- . получает все имена файлов в хранилище
  • xargs -0 -n1 git blame -c звонки git blame для каждого файла; -c говорит ему использовать вкладку между каждым полем в выходных данных (используется для сортировки позже) - эти две части основаны на верхнем ответе на этот вопрос
  • grep TODO отфильтровать строки, которые не содержат текст TODO
  • sort -t\t -k3 используя вкладки в качестве разделителей, сортируйте по третьему полю (которое должно быть датой)

Обратите внимание, что при этом полностью игнорируется часовой пояс (т. Е. Он просто сортирует по необработанной дате без учета части +0000).

Некоторое время назад столкнулся с этой проблемой и реализовал инструмент CLI: https://pypi.org/project/whatshouldido/

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