/** * Exclude objects from the compacted pack. * * @param pack * objects to not include. * @return {@code this}. * @throws java.io.IOException * pack index cannot be loaded. */ public DfsPackCompactor exclude(DfsPackFile pack) throws IOException { final PackIndex idx; try (DfsReader ctx = (DfsReader) repo.newObjectReader()) { idx = pack.getPackIndex(ctx); } return exclude(idx); }
private List<DfsObjectToPack> findAllFromPack(DfsPackFile pack, Iterable<ObjectToPack> objects, boolean skipFound) throws IOException { List<DfsObjectToPack> tmp = new BlockList<>(); PackIndex idx = pack.getPackIndex(this); for (ObjectToPack obj : objects) { DfsObjectToPack otp = (DfsObjectToPack) obj; if (skipFound && otp.isFound()) { continue; } long p = idx.findOffset(otp); if (0 < p && !pack.isCorrupt(p)) { otp.setOffset(p); tmp.add(otp); } } return tmp; }
private List<ObjectIdWithOffset> toInclude(DfsPackFile src, DfsReader ctx) throws IOException { PackIndex srcIdx = src.getPackIndex(ctx); List<ObjectIdWithOffset> want = new BlockList<>( (int) srcIdx.getObjectCount()); SCAN: for (PackIndex.MutableEntry ent : srcIdx) { ObjectId id = ent.toObjectId(); RevObject obj = rw.lookupOrNull(id); if (obj != null && (obj.has(added) || obj.has(isBase))) continue; for (ObjectIdSet e : exclude) if (e.contains(id)) continue SCAN; want.add(new ObjectIdWithOffset(id, ent.getOffset())); } Collections.sort(want, new Comparator<ObjectIdWithOffset>() { @Override public int compare(ObjectIdWithOffset a, ObjectIdWithOffset b) { return Long.signum(a.offset - b.offset); } }); return want; }
private void verifyPack(ProgressMonitor pm, FsckError errors, DfsReader ctx, DfsPackFile pack, ReadableChannel ch) throws IOException, CorruptPackIndexException { FsckPackParser fpp = new FsckPackParser(objdb, ch); fpp.setObjectChecker(objChecker); fpp.overwriteObjectCount(pack.getPackDescription().getObjectCount()); fpp.parse(pm); errors.getCorruptObjects().addAll(fpp.getCorruptObjects()); fpp.verifyIndex(pack.getPackIndex(ctx)); }
/** * Exclude objects from the compacted pack. * * @param pack * objects to not include. * @return {@code this}. * @throws java.io.IOException * pack index cannot be loaded. */ public DfsPackCompactor exclude(DfsPackFile pack) throws IOException { final PackIndex idx; try (DfsReader ctx = (DfsReader) repo.newObjectReader()) { idx = pack.getPackIndex(ctx); } return exclude(idx); }
/** * Exclude objects from the compacted pack. * * @param pack * objects to not include. * @return {@code this}. * @throws IOException * pack index cannot be loaded. */ public DfsPackCompactor exclude(DfsPackFile pack) throws IOException { final PackIndex idx; try (DfsReader ctx = (DfsReader) repo.newObjectReader()) { idx = pack.getPackIndex(ctx); } return exclude(idx); }
long estimatedPackSize = 12 + 20; // header and trailer sizes. for (DfsPackFile oldPack : packsBefore) { PackIndex oldIdx = oldPack.getPackIndex(ctx); PackReverseIndex oldRevIdx = oldPack.getReverseIdx(ctx); long maxOffset = oldPack.getPackDescription().getFileSize(PACK)
private List<DfsObjectToPack> findAllFromPack(DfsPackFile pack, Iterable<ObjectToPack> objects) throws IOException { List<DfsObjectToPack> tmp = new BlockList<DfsObjectToPack>(); PackIndex idx = pack.getPackIndex(this); for (ObjectToPack otp : objects) { long p = idx.findOffset(otp); if (0 < p && !pack.isCorrupt(p)) { otp.setOffset(p); tmp.add((DfsObjectToPack) otp); } } return tmp; }
private List<DfsObjectToPack> findAllFromPack(DfsPackFile pack, Iterable<ObjectToPack> objects, boolean skipFound) throws IOException { List<DfsObjectToPack> tmp = new BlockList<>(); PackIndex idx = pack.getPackIndex(this); for (ObjectToPack obj : objects) { DfsObjectToPack otp = (DfsObjectToPack) obj; if (skipFound && otp.isFound()) { continue; } long p = idx.findOffset(otp); if (0 < p && !pack.isCorrupt(p)) { otp.setOffset(p); tmp.add(otp); } } return tmp; }
private void verifyPack(ProgressMonitor pm, FsckError errors, DfsReader ctx, DfsPackFile pack, ReadableChannel ch) throws IOException, CorruptPackIndexException { FsckPackParser fpp = new FsckPackParser(objdb, ch); fpp.setObjectChecker(objChecker); fpp.overwriteObjectCount(pack.getPackDescription().getObjectCount()); fpp.parse(pm); errors.getCorruptObjects().addAll(fpp.getCorruptObjects()); fpp.verifyIndex(pack.getPackIndex(ctx)); }
private List<ObjectIdWithOffset> toInclude(DfsPackFile src, DfsReader ctx) throws IOException { PackIndex srcIdx = src.getPackIndex(ctx); List<ObjectIdWithOffset> want = new BlockList<>( (int) srcIdx.getObjectCount()); SCAN: for (PackIndex.MutableEntry ent : srcIdx) { ObjectId id = ent.toObjectId(); RevObject obj = rw.lookupOrNull(id); if (obj != null && (obj.has(added) || obj.has(isBase))) continue; for (ObjectIdSet e : exclude) if (e.contains(id)) continue SCAN; want.add(new ObjectIdWithOffset(id, ent.getOffset())); } Collections.sort(want, new Comparator<ObjectIdWithOffset>() { @Override public int compare(ObjectIdWithOffset a, ObjectIdWithOffset b) { return Long.signum(a.offset - b.offset); } }); return want; }
private List<ObjectIdWithOffset> toInclude(DfsPackFile src, DfsReader ctx) throws IOException { PackIndex srcIdx = src.getPackIndex(ctx); List<ObjectIdWithOffset> want = new BlockList<ObjectIdWithOffset>( (int) srcIdx.getObjectCount()); SCAN: for (PackIndex.MutableEntry ent : srcIdx) { ObjectId id = ent.toObjectId(); RevObject obj = rw.lookupOrNull(id); if (obj != null && (obj.has(added) || obj.has(isBase))) continue; for (ObjectIdSet e : exclude) if (e.contains(id)) continue SCAN; want.add(new ObjectIdWithOffset(id, ent.getOffset())); } Collections.sort(want, new Comparator<ObjectIdWithOffset>() { public int compare(ObjectIdWithOffset a, ObjectIdWithOffset b) { return Long.signum(a.offset - b.offset); } }); return want; }
private void packGarbage(ProgressMonitor pm) throws IOException { PackConfig cfg = new PackConfig(packConfig); cfg.setReuseDeltas(true); cfg.setReuseObjects(true); cfg.setDeltaCompress(false); cfg.setBuildBitmaps(false); try (PackWriter pw = new PackWriter(cfg, ctx); RevWalk pool = new RevWalk(ctx)) { pw.setDeltaBaseAsOffset(true); pw.setReuseDeltaCommits(true); pm.beginTask(JGitText.get().findingGarbage, objectsBefore()); for (DfsPackFile oldPack : packsBefore) { PackIndex oldIdx = oldPack.getPackIndex(ctx); for (PackIndex.MutableEntry ent : oldIdx) { pm.update(1); ObjectId id = ent.toObjectId(); if (pool.lookupOrNull(id) != null || anyPackHas(id)) continue; int type = oldPack.getObjectType(ctx, ent.getOffset()); pw.addObject(pool.lookupAny(id, type)); } } pm.endTask(); if (0 < pw.getObjectCount()) writePack(UNREACHABLE_GARBAGE, pw, pm); } }
long estimatedPackSize = 12 + 20; // header and trailer sizes. for (DfsPackFile oldPack : packsBefore) { PackIndex oldIdx = oldPack.getPackIndex(ctx); PackReverseIndex oldRevIdx = oldPack.getReverseIdx(ctx); long maxOffset = oldPack.getPackDescription().getFileSize(PACK)