我已经实现了一个DfsRepository
使用 jgit-2.0.0.201206130900。它很好用,但我想重新打包它,这样我只有一个打包文件。我如何通过 jgit 做到这一点?
问问题
259 次
1 回答
0
得到这个工作。DfsGarbageCollector
基本上相当于repack -d
. 要获得repack -a
行为,请使用DfsPackCompactor
:
void repack(DfsRepository repo) throws IOException {
DfsGarbageCollector gc = new DfsGarbageCollector(repo);
gc.pack(null);
// update the list of packs for getPacks() below
// otherwise not all packs are compacted
repo.scanForRepoChanges();
// only compact if there are multiple pack files
DfsPackFile[] packs = repo.getObjectDatabase().getPacks();
if (packs.length > 1) {
DfsPackCompactor compactor = new DfsPackCompactor(repo);
for (DfsPackFile pack : packs) {
compactor.add(pack);
}
compactor.compact(null);
}
}
这还不是全部。
DfsGarbageCollector
为垃圾创建一个单独的包文件。
DfsOutputStream
我发现“删除”垃圾包文件的最简单方法是从我的实现中返回一个,DfsObjDatabase.writePackFile()
如果包文件的源是PackSource.UNREACHABLE_GARBAGE
.
于 2012-11-26T23:25:46.617 回答