Git注意到细节

时间:2015-08-28 11:04:19

标签: git git-notes

我已阅读thisthis,但仍然认为它们模糊不清。到目前为止理解:

  • 创作(git notes add -m "a note"
  • notes is namespaced

问题:

  1. 注意似乎没有创建提交,那么pushexample)如何才能实现?它下面的机制是什么?如果不是提交,那么在概念上添加什么?
  2. 我在哪里可以看到我在Github UI上的push条记录?
  3. Github commit comments人们可以制作和记录功能之间有什么关系吗?
  4. 如果Github评论说明我如何通过git log获取它们并在我的本地视频上看到它们?
  5. 如果Github评论不是笔记,它们是什么,是否可以获取它们?
  6. 是合并的笔记吗?如何?
  7. 是否有任何解决已编辑笔记冲突的警告?
  8. 是否有任何其他问题/困难与笔记?
  9. 感谢

1 个答案:

答案 0 :(得分:10)

我在这里写了更多关于他们的信息,作为git tip of the week series的一部分。

http://alblue.bandlem.com/2011/11/git-tip-of-week-git-notes.html

注释本身是blob,存储在单独的ref文件(refs/notes/commits)中,并由它们指向的提交进行组织(因此git ls-tree refs/notes/commits)给出了一个树对象(想想:目录)和内容)每个目录名称是他们指向的东西,每个值都是一个包含notes消息本身的blob。

你可以在GitHub中看到Gerrit使用JGit评论树(使用refs/notes/review而不是refs/notes/commit,但基本上完全相同的原则)的评论说明,请点击此处:

https://github.com/eclipse/jgit/tree/refs/notes/review

由于它也是一个引用,并且文件内容的增量与提交一起存储,您可以看到各个注释被更改,例如:

https://github.com/eclipse/jgit/commit/de70108c883afe563a48352c05cdd440c25f58cc

请注意,文件名称显示为对象的路径;在上面的例子中,de70...是添加消息的提交,但提交的内容正在更改与此提交相对应的文件3a/bf...

https://github.com/eclipse/jgit/commit/3abf35bc0fc7a1c130e8fec42083ffd21c342129

如果您将评论链接追溯到原始的Gerrit来源:

https://git.eclipse.org/r/#/c/54632/

您会看到评论数据与notes元素的数据相对应。

至于它们是否干净地合并 - 因为每个注释对应于每个提交,并且每次提交在更改后都是不可变的,并且注释提交基于每个目录/文件,您可以轻松地为不同的提交重叠提供多个注释不用担心合并冲突。但是,如果两个程序/进程更新相同的提交注释,那么您可能会遇到需要以与任何其他DVCS合并相同的方式解决的合并问题。

一般来说,需要存储正交信息的程序应该使用自己的笔记空间,就像Gerrit对refs/notes/review所做的那样。因此,如果您有refs/notes/program1refs/notes/program2,则永远不会发生碰撞。