10

假设我想编写一个助手,允许以可以传播到克隆的方式将一些元数据附加到存储库refs。简单示例(一个克隆原型,它甚至没有将注释附加到任何其他 git 对象):

hash=$(echo "Just a comment" | git hash-object -w --stdin)
git update-ref refs/comments/just $hash

即我创建了一个blob带有哈希的对象hash并引用它,refs/comments/just因此git fsck --unreachable不会抱怨它,git gc也永远不会prune成为对象。

但这当然是一个非常简单的例子,实际上我对更复杂的功能感兴趣。在那里,我的问题是,我可以“合法”做什么,我应该绝对避免做什么?

例如,SE 上的几篇帖子是关于用户必须从重复tree条目中恢复的。因此,一个“不要”就是“不要创建tree带有重复条目的”。另一个例子是“确保你的对象是可访问的,所以不会git prune删除它们”。还有什么?

我可以创建自定义对象类型吗?对树中的 blob 使用“无效”文件模式?我在哪里可以找到概述?或者我应该git-fsck手动检查 's source 以查看什么构成错误(以及哪些是可以忽略的)?

4

0 回答 0