【问题标题】:Script to find all TODO comments created on a git branch?查找在 git 分支上创建的所有 TODO 注释的脚本?
【发布时间】:2014-08-04 10:18:25
【问题描述】:

我有一个非常大的功能分支。在我们的代码中有很多挥之不去的 TODO cmets,但我想在尚未合并到 master 的提交上找到所有添加到代码中的 TODO(尚未删除)。我该怎么办?

【问题讨论】:

标签: git todo


【解决方案1】:

您可以简单地将您的分支与输出中的 TODO 和 grep 进行比较

git diff master..branch | grep "^+.*TODO"

假设 TODO 行中有足够的上下文,这对我很有用。

【讨论】:

  • 这没有给出文件位置
【解决方案2】:

您可以将其用作 Git 别名:

git --no-pager diff -U0 master | \
grep '^+.*TODO' | \
sed 's/^+//' | \
git --no-pager grep -nFf - 2> /dev/null

它显示了当前分支的添加/修改的 TODO 行(与master 相比),但您必须在使用它之前git add(因为git grep)。

如果您将其添加到 status 别名中会更加有用,这样您就可以确定当您看到状态时没有剩余的 TODO。

[alias]
  s = "!sh -c ' \
    [ $GIT_PREFIX ] && cd $GIT_PREFIX; \
    git status --short --branch $*; \
    git --no-pager diff -U0 master | \
    grep \"^+.*TODO\" | \
    sed \"s/^+//\" | \
    git --no-pager grep -nFf - 2> /dev/null' -"

示例输出:

$ git s
## my-branch...origin/my-branch [ahead 2]
 M README.adoc
README.adoc:12: // TODO: Add screencast
README.adoc:26: // TODO: Advertise Asciidoctor

【讨论】:

  • 要让这个别名在 git 工作树中工作,在第一行添加 export GIT_WORK_TREE=$(pwd); \ ,在 [ $GIT_PREFIX ] && cd $GIT_PREFIX 之前
【解决方案3】:

git grep 可以在给定的树上执行文本搜索。 git branch --no-merged $commit 为您提供所有未合并到命名提交中的分支。将两者结合起来就可以了(我知道,您不应该在脚本中使用git branch,但我无法快速找到一种方法来告诉git for-each-ref 只考虑未合并的引用。如果有人有解决方案,请随时评论/编辑)

git branch --no-merged master | cut -c3- | while read branch; do
  git grep 'TODO' "$branch"
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-17
    • 2014-11-02
    • 1970-01-01
    • 2011-08-20
    • 2013-07-13
    • 2018-09-12
    • 2011-11-17
    • 2017-02-09
    相关资源
    最近更新 更多