2017-10-17 134 views
0

相当理论上的问题,但如果有人知道实际的实现,我很乐意听到他们。git自定义提交ID?

正如我们所知,git使用SHA1提交id。 他们的问题是,你不能通过只看这个键快速说出任何事情。是的,你可以通过git help找到关于这个git commit id的几乎任何东西,但是你只能通过寻找来解释它。有时它会很方便。

如果提交ID为SHA1 + authorid + creation_time,则使用起来会更简单。

我敢肯定有一些简单的原因,为什么git没有这种类型的提交ID,但我不知道哪些。有人知道吗?

+0

在我看来,有一个关于什么是“易于使用”大量假设,完全取决于您的工具设置。 SHA ID非常有助于满足系统的技术需求 - 这可能是用户接触到的用户界面最不友好的东西。所以我不确信将面向用户的数据混入特定的数据元素是有帮助的。 –

回答

3

没有根本或技术原因Git无法将此信息附加到每个散列。不过,它不会添加任何尚不存在的功能,因为您只需创建一个由您控制的名称的注释标签,该标签包含所需提交的哈希ID以及您希望插入的任何辅助数据。

换句话说,您的建议可能会起作用,并且可能会删除对某些标签的需求,但代价是即使更笨重的哈希ID也会消失。这是否是一个好的平衡(对现状的改进)是一个意见问题。 :-)

(关于什么的Git,或任何其他类似的VCS,从哈希需要说明,请参阅chapter 4, Distributing Repositories, of my extremely-slow-progress book。)

+0

另外,Git对树和blob使用相同类型的ID,可能没有明确的作者或创建时间。 –

+0

@丹尼尔:真的。我可以想象Git的核心部分可能会完全忽略附加的数据,但是由于Git获得了SHA-256处理(这需要保留多个散列索引表),所以它也可以保留和检查其他数据。 (但是就速度关键部分而言,使它们可变长度有点粘性。) – torek

+0

总会有一个问题需要在散列中编码多少额外信息。因此,在Git中实现的方法 - 在提交消息本身中使用自由格式关键字对需要的任何内容进行编码,然后在需要时将其解析出来 - 更明智。当然,它并没有“只是通过查看哈希”属性,但它的方式更加灵活。 – kostix