DfsRepository
jgit-2.0.0.201206130900を使用して実装しました。うまく機能しますが、パックファイルが1つだけになるように再パックしたいと思います。jgitを介してそれを行うにはどうすればよいですか?
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 に答える