如何列出当前git托管代码库中的所有TODO消息

时间:2014-07-30 14:19:16

标签: git git-commit todo text-search

我希望看到 仅我 所写的所有TODO评论,以及当前存在于git托管代码库中的评论。

What I've got so far正在打印我在完整的git历史记录中创建或修改的所有TODO评论:git log -p --author="My name" -S TODO | grep "\+.*TODO"

但是这个工具链列出了所有写过的TODO评论,甚至是那些我已经解决并因此从代码中再次删除的评论。

是否有可以逐行搜索当前代码库的工具,检查它是否包含“TODO”以及此行是否由我创作然后打印这些行?

5 个答案:

答案 0 :(得分:17)

您可以将git blame与grep结合使用。

像这样(不是最好的,但应该有效)

git grep -l TODO | xargs -n1 git blame | grep 'Your name' | grep TODO

改进版本可能会将第一个grep找到的行号与git blame仅显示给定行的能力结合起来。

答案 1 :(得分:13)

我想添加 aragaer Kyle 的解决方案:

  • 使用grep config获取您的名字
  • 显示TODO评论的文件名和行号
  • 删除提交SHA,作者姓名和提交时间戳
git grep -l TODO | xargs -n1 git blame -f -n -w | grep "$(git config user.name)" | grep TODO | sed "s/.\{9\}//" | sed "s/(.*)[[:space:]]*//"

打印:

Cpp/CoolClass.cpp 123 //TODO: Do we really need this?
Cpp/AnotherClass.cpp 42 //TODO: Do we miss something?
Java/MyListener.java 23 //TODO: Optimize

答案 2 :(得分:4)

我发现用户名可以包含空格,因此通过电子邮件地址过滤更容易。另外,@ todo(小写)是我在docblocks中添加注释的方式,所以我添加了"忽略低/大写"旗。这是我的解决方案:

git grep -il TODO | xargs -n1 git blame -M  -f -e | grep -i TODO | grep $(git config user.email)

答案 3 :(得分:2)

完成使用git config获取您的姓名:

git grep -l TODO | xargs -n1 git blame | grep "$(git config user.name)" | grep TODO

答案 4 :(得分:2)

这里有个小建议,就是我遇到了更大的存储库和一些二进制文件。 xargs -ni git blame部分导致信号13出现意外情况。我通过在初始git grep上添加-I开关来解决此问题。

FWIW这是完整错误(请转到Google)

xargs: git: terminated by signal 13

这是我使用的示例(也想删除所有内容,因此删除了我的grep)

git grep -I -l TODO | xargs -n1 git blame -f -n -w | grep TODO | sed "s/.\{9\}//" | sed "s/(.*)[[:space:]]*//"