git - 使用 git 列出按引入日期排序的代码中的 TODO

标签 git todo

我想显示我的代码中所有 TODO 的列表,但使用历史记录 (Git) 排序并首先显示最近的。

有点像这里显示的结果:git – order commits introducing "TODO"s by date

但显示的是 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 mojo 来自己解决这个问题。有什么想法吗?

最佳答案

这是一个近似解;格式不完全符合您的要求,因此如果重要的话,您需要通过 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 告诉它在输出中的每个字段之间使用制表符(稍后用于排序)——这两个部分基于对 this question 的最佳答案。
  • grep TODO 过滤掉不包含文本 TODO 的行
  • sort -t\t -k3 使用制表符作为分隔符,按第三个字段(应该是日期)排序

请注意,这会完全忽略时区(即它只是按原始日期排序,而不考虑 +0000 部分)。

关于git - 使用 git 列出按引入日期排序的代码中的 TODO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43871473/

相关文章:

java - 将 Java 项目从 java.net 移动到 bitbucket 的最简单方法是什么

intellij-idea - IntelliJ IDEA : Generate list of TODOs with Todo-text and according file

eclipse - todo 标签在 eclipse 和 pydev 上不起作用

git - laravel gitIgnore 不会忽略我的文件夹

windows - 推送到现有项目时出现 SSH 错误权限被拒绝(公钥)

git - Homebrew:将对象添加到存储库数据库 .git/objects 的权限不足

xcode - Xcode:查看项目中的所有TODO

visual-studio-2010 - VS 2010-无法添加TODO token -添加被禁用?

coding-style - TODO 公约从何而来?

windows - 混帐(窗口); P4merge 作为 mergetool 错误