如何从gitpython中的存储库路径获取变量中的Ostream或Oinfo列表?

我目前有一个没有packfile的有效git数据库,但是由于一个错误的ingit-pack-objects(进程崩溃了堆栈转储文件)我无法执行thegit repackcommand.

我看了一下这个错误,它与官方git项目的C性质相关联(修复需要更改coretructdefinitions),因此需要花费大量时间来修复.

我找到的唯一不使用C的替代方法是gitdb(gitpython的一部分).但是我无法找到如何使用write_pack()功能.
或者更准确地说,我不知道如何从松散对象的数据库路径构建object_iter参数.
我甚至不知道object_iter列表中使用的确切类类型.

那么,如何将gitdb用于此目的呢?

最佳答案 解决了!

#/usr/bin/python
import os,sys,zlib,gitdb
from gitdb.db import LooseObjectDB
from gitdb.pack import PackEntity
from gitdb.util import bin_to_hex,hex_to_bin

ldb=LooseObjectDB(sys.argv[1]+'/.git/objects')
PackEntity.create((ldb.stream(sha) for sha in ldb.sha_iter()),sys.argv[1]+'/.git/objects/pack',object_count=ldb.size(),zlib_compression=zlib.Z_BEST_COMPRESSION)
点赞