我目前有一个没有 packfile 的有效 git 数据库,但由于 git-pack-objects
(进程因堆栈转储文件而崩溃) 中的错误,我无法执行git repack
命令。
我查看了错误,它与官方 git 项目的 C 性质相关(修复需要更改核心struct
定义) 所以,这将需要很多时间来修复。
我发现唯一不使用 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)
关于python - 如何从 gitpython 中的存储库路径获取变量中的 Ostream 或 Oinfo 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33565280/