是否可以将 GIT 用于类似 UUID 的标识符?

发布于 2024-10-12 16:05:57 字数 261 浏览 6 评论 0原文

我需要为我的存储库中的代码片段创建唯一的“不可变”ID - 涵盖给定对象/代码块的所有修订。目的是,如果有人发送代码片段,我可以使用代码的 sha1 快速将其映射到对象(如果它或其先前版本位于发送者存储库中)。从那里我可以使用这个唯一的 ID 来提取有关代码块的元数据。

git 中的 sha1 似乎是构造 UUID(版本 5)的起点,并且可以从 sha1 开始搜索 git 存储库,然后遍历树以找到文件首次提交时的原始 sha1。在所有修订版中使用此数字作为代码块的唯一标识符是否有意义?

I need to create unique "immutable" ids for code fragments in my repository - that cover all the revisions of a given object / chunk of code. The aim is that if someone sends in a code fragment I can quickly map it to the object using the sha1 of the code (if it or a previous revision of it is in the senders repository). From there I can use this unique id to extract metadata about the code chunk.

The sha1's in git seem a starting point to construct a UUID (Version 5), and it is possible to search a git repository starting with the sha1 and then traverse the tree to find the original sha1 of file when it was first commited. Does it make sense to use this number for a unique identifier for the code chunk in all it's revisions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

唱一曲作罢 2024-10-19 16:05:57

我不确定我是否正确理解了这个问题,但是如果您的“代码块”始终位于单独的文件中,那么如果您解决了这两个问题,您概述的方法可能会起作用:

  1. 您将需要确保“分叉”永远不会发生的情况是,一个块永远不会分裂成两个不同的块。否则,两个块将获得相同的 UUID,这可能是您不希望的。

  2. 请记住,SHA1 本质上对输入中的微小变化很敏感,包括额外的换行符等,因此在创建用于在 Git 数据库中查找的哈希值时必须小心。

I'm not sure I understood the problem correctly, but if your "code chunks" are always in separate files, your outlined approach might work if you solve these two problems:

  1. You will need to make sure that "forking" never happens, that is, a chunk never diverges into two different chunks. Otherwise both chunks will get the same UUID, which you probably do not want.

  2. Remember that SHA1 is by its nature sensitive to minuscule changes in input, including extra newlines, etc., so you have to be careful when creating the hash for lookup in the Git database.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文