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

How to get a list of Ostream or Oinfo in a variable from a repository path in gitpython?

我目前有一个没有包文件的有效 git 数据库,但由于 git-pack-objects 中的错误(进程因堆栈转储文件而崩溃) 我无法执行git repack命令。

我看了一下错误,它与官方 git 项目的 C 性质有关 (修复需要更改核心struct定义) 所以,这需要很多时间来修复。

我发现唯一不使用 C 的替代方案是 gitdb (gitpython 的一部分)。但是我找不到如何使用write_pack()函数。
或者更确切地说,我不知道如何从松散对象的数据库路径构建object_iter参数。
我什至不知道 object_iter 列表中使用的确切 class 类型。

那么,如何为此目的使用 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)