我想显示我的代码中所有 TODO 的列表,但使用历史记录 (Git) 排序并首先显示最近的。
有点像这里显示的结果: git – order commits 按日期引入“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
Run Code Online (Sandbox Code Playgroud)
我认为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
Run Code Online (Sandbox Code Playgroud)
它的工作原理如下:
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 部分)。
| 归档时间: |
|
| 查看次数: |
485 次 |
| 最近记录: |