0

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

4

1 に答える 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ガベージ用に別のパックファイルを作成します。

ガベージ パックファイルを「削除」する最も簡単な方法はDfsOutputStreamDfsObjDatabase.writePackFile()パック ファイルのソースがPackSource.UNREACHABLE_GARBAGE.

于 2012-11-26T23:25:46.617 に答える