Используйте 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
отфильтровать строки, которые не содержат текст TODOsort -t\t -k3
используя вкладки в качестве разделителей, сортируйте по третьему полю (которое должно быть датой)
Обратите внимание, что при этом полностью игнорируется часовой пояс (т. Е. Он просто сортирует по необработанной дате без учета части +0000).
Некоторое время назад столкнулся с этой проблемой и реализовал инструмент CLI: https://pypi.org/project/whatshouldido/