在我的git存储库中,我使用一个算法根据分支名称和标记分配每个提交一个或多个唯一版本号。我想在另一个大型存储库中使用这种机制,我想在不传输任何文件的情况下克隆它。
一个裸露的克隆帮助我摆脱了blobs的工作副本,但它仍然从服务器下载它们。带有--depth 1
的浅克隆跳过大多数blobs,但也跳过下载除一个以外的所有提交的元数据。
我是否可以在客户端使用类似于git fast-export --no-data
的东西来获取包含提交元数据和文件名的图形信息,而无需首先从服务器克隆存储库?理想情况下,我可以像任何其他(裸的、浅的)回购一样通过git log|show|rev-parse|show-ref
访问元数据。
(我知道git LFS和git附件是存在的,可以帮助减少一些repos的大小,但我不能在现有的存储库上使用它们而不更改它们。)
发布于 2016-12-20 05:22:32
我能在客户端使用像git这样的快速导出--无数据吗?
否:除了git ls-remote
(它只为远程回购的负责人获取元数据)之外,其他任何东西都将获得完整的回购历史记录。
您需要由Git托管服务(如GitHub )管理回购,提供API (如提交API),以便在没有数据的情况下查询元数据。
发布于 2019-09-11 20:51:09
一段时间后,这方面的另一个想法是:从2017年起,pack协议现在允许部分克隆和可用忽略所有的空白--这在服务器端应该足够了。
考虑到当前的服务器端实现,遗憾的是,这并不像人们希望的那样好:
C:\Users\phi1010>git clone https://github.com/torvalds/linux.git --filter=blob:none
Cloning into 'linux'...
warning: filtering not recognized by server, ignoring
remote: Enumerating objects: 6876195, done.
[...]
Github甚至宣布了对v2协议及其过滤功能的支持,但这既不适用于-c protocol.version=2
,也不适用于GitHub和GitLab支持git克隆的过滤参数吗?
https://stackoverflow.com/questions/41232037
复制相似问题