繁体   English   中英

可以指示git只写packfiles吗?

[英]Is it possible to instruct git to only write packfiles?

我有时将git存储库存储在Flash介质上,这在创建多个单个文件时比较慢,但是在写入单个大文件时相当快。 该存储库是裸存储库,因此基本上只是.git文件夹。

每当我推送到这些存储库时,我都会注意到git复制了一个打包文件,然后将其解压缩。 我真的不希望git解包对象; 相反,我希望它可以使对象保持压缩状态。

有没有一种方法可以指示git只写packfile而不解压它们?

回顾git支持标准配置选项 ,我碰巧阅读了以下receive.unpackLimit描述:

如果在一次推送中收到的对象数量低于此限制,则这些对象将被解压缩到松散的对象文件中。 但是,如果接收到的对象数等于或超过此限制,则在添加任何缺失的增量基数之后,接收到的数据包将存储为一个数据包。 通过推送存储数据包可以使推送操作更快地完成,尤其是在速度较慢的文件系统上。 如果未设置,则使用transfer.unpackLimit的值。

我在flash驱动器上配置了裸存储库之一,将transfer.unpackLimit设置为0,随后推送7个对象不会导致解压缩。

我不擅长git repacking,但我会尝试查看git-repack

该脚本用于将当前不在“包”中的所有对象组合到一个包中。 它也可以用于将现有包重新组织为一个更有效的包。

包是对象的集合,这些对象分别进行压缩并应用增量压缩,并与相关的索引文件一起存储在单个文件中。

软件包用于减少镜像系统,备份引擎,磁盘存储等上的负载。

编辑1 :也许-a选项就是您想要的:

-一种

与其增量打包未打包的对象,不如将引用的所有内容打包到一个包中。 在打包用于私有开发的存储库时特别有用,无需担心人们通过愚蠢的协议从中获取信息。 与-d一起使用。 这将清除git prune留下的对象,但是git fsck --full显示为悬空。

编辑2 :正如我在评论中所说,这不是一个真正的答案,而是一个可能的尝试指针。

一个理想的解决方案可能是bup bup的想法是直接(独立于git)编写git pack文件,以便您可以使用高效的pack文件格式进行备份,而不会因为git打包大型存储库而导致性能问题。

bup的README文件中的“在远程服务器上进行备份”示例中给出了如何在远程git存储库中创建打包文件的示例。

作为免责声明,我自己没有尝试过,因此在您的用例中使用bup可能存在一些基本问题,但对我来说似乎是个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM