Rugged:树的路径和commit_id

时间:2015-10-27 13:15:59

标签: ruby-on-rails ruby git rugged

我有一个粗糙的树对象,我想知道它的路径是什么(相对于root)以及写入树时的提交ID是什么。例如:

tree  = repo.lookup '7892eeee70c08fae4db63aef7000dea39f883b30' #sha/oid of tree

我应该对这个树对象执行哪些操作,以便获取其路径和提交ID?

1 个答案:

答案 0 :(得分:1)

该信息根本不存储在树中。 Git使用Merkle树,其中父母知道子树是什么,但每个树可以包含在多个提交中(这是典型的情况,因为一些子网很少被触及)。

如果这些目录具有相同的内容,也可以通过许多不同的路径访问树。

找出树所属位置的唯一方法是查看每个提交并从根目录中递归查看是否可以找到您给出的树。这将是一项非常昂贵的操作。

我建议你退后一步,弄清楚为什么你认为你需要找出树可以到达的地方。听起来你已经决定了许多步骤,并且当你应该从更高层次上看它时,你会询问一个细节。