Git:获取分支的所有注释

时间:2013-12-02 09:05:58

标签: git git-notes

我们想用git notes add注释我们的提交,这可以正常工作。要获得包含注释的所有提交的列表,我们使用此命令

git notes | cut -d' ' -f2 | xargs -ihash git log hash -1

现在我们正在寻找分支机构的笔记。我在这里不知所措,因为笔记对分支一无所知。可能有一种方法可以从git log开始,并询问git notes是否有提交的注释。但我确信这对于大型存储库来说是迟钝的。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我会从这开始:

git log --pretty=format:"%H %N" --show-notes <branch>

请参阅git help log了解格式字符串中的其他内容,以便按照您希望的方式修改输出...

答案 1 :(得分:1)

查找笔记

在master上所有具有注释的提交中显示所有带有注释的简短提交

git notes |\ 
  awk '{if (!system("git merge-base --is-ancestor "$2" master")) {print $2}}' |\
  xargs git show --abbrev-commit --oneline -s --notes

它如何工作?

git notes列出了注释blob与目标提交的映射:

$ git notes 
579c5b129af5662ca2ae6d08977fd5acfe4ca383 3c4f076572612726808d686d04acb2266401c2f9
63a79274ee3486213d58eef8a5a6f604f7c1fdb1 6546d605b21bb92f270af61f3cc00ff2978001e2

因此您可以通过测试每个分支的成员资格来过滤流中的提交。

但是,如果您有很多注释,那么所有这些单独命令的成本实际上会加起来。

每分支注释

将来,您可能想在这里为不同的分支使用不同的注释引用。我没有看到将core.notesRef配置选项绑定到当前分支的方法,因此您必须

git notes --ref "my-branch-name" --edit

等但是您可能

alias gn git notes --ref "$(git rev-parse --abbrev-ref HEAD)"

解决这个问题。

这不会按分支对您的当前笔记进行排序,但将来会有所帮助。

您需要为每个配置refs/notes/branchname" branchname要在共享时被提取并推送。