从Git中提取元信息,允许Git在不获取完整repo的情况下进行日志记录

从Git中提取元信息,允许Git在不获取完整repo的情况下进行日志记录,git,git-log,git-filter-branch,Git,Git Log,Git Filter Branch,在部署中使用Git时,通常需要了解提交历史和关系。回购规模较小时,不存在任何问题。但是对于大型存储库来说,获取完整历史记录需要获取所有对象。此操作会占用大量带宽和时间 因此,问题是: 需要在不获取内容的情况下使用大型Git回购的历史记录。 在没有签出内容的情况下,获取少量MBs并开始工作git log,git rev parse,git rev list,等等会很好 想法1。具有git日志原始输出的专用分支_metainfo 将git日志的输出存储到专用分支。 但是这种方法需要自己的解析器。 这

在部署中使用Git时,通常需要了解提交历史和关系。回购规模较小时,不存在任何问题。但是对于大型存储库来说,获取完整历史记录需要获取所有对象。此操作会占用大量带宽和时间

因此,问题是:

需要在不获取内容的情况下使用大型Git回购的历史记录。 在没有签出内容的情况下,获取少量MBs并开始工作
git log
git rev parse
git rev list
,等等会很好

想法1。具有git日志原始输出的专用分支_metainfo 将
git日志的输出存储到专用分支。
但是这种方法需要自己的解析器。
这适用于非常简单的任务

想法2。删减文件内容
git过滤器分支树过滤器“echo>**”
(伪代码)。这将更改提交的哈希值,但会存储提交消息和日期。旧的提交散列可以添加到过滤后的提交消息中

upd

谢谢你的回答。我已经阅读了可能的副本并了解到:“目前没有解决方案”。在这项研究中,我将我的第一个想法作为一个简单的解决方法,第二个想法作为一个工作解决方案的概念。它们都给出了半实用的结果。如果社区感兴趣的话,我会把它们美化并出版

您要找的东西今天没有。您可以像您所建议的那样做,但是Git作者正在研究一种不同的方法。Git2.19提供了一些构建块:promisor包提供了记录某些对象存在的能力,可以通过网络从某些提供者处获得,但实际上并不存储在当前Git存储库中

包含提交对象但仅对所有文件对象有承诺的存储库将能够
git log
(无
-p
)。获取部分或全部承诺的树和blob对象将启用
-p
和其他附加操作。一旦所有的承诺都实现了,您就有了一个正常的存储库


然而,即使是Git2.19也没有实现此功能所需的所有代码。它只有承诺的概念。请参阅(链接直接指向“部分克隆”工作)或@OliverRadini的可能副本的。

可能副本,Q的答案不满足此要求。@kyb我相信是的;引用对该问题的回答:“如果没有本地(克隆)副本,就无法使用git日志查看远程日志”。唯一的建议是,如果你有权访问.git目录,你可以从中提取日志。你可以添加一个链接来讨论这个功能吗?