4

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

我查看了该错误,它与官方 git 项目的 C 特性有关(修复需要更改核心struct定义),因此,这将需要大量时间来修复。

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

那么,如何为此目的使用 gitdb 呢?

4

1 回答 1

1

解决了!

#/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)
于 2015-11-12T01:08:24.773 回答