Package org.eclipse.jgit.internal.storage.pack

Examples of org.eclipse.jgit.internal.storage.pack.PackWriter$State


      pc.setIndexVersion(2);
      pc.setDeltaCompress(false);
      pc.setReuseDeltas(true);
      pc.setReuseObjects(true);

      PackWriter pw = new PackWriter(pc, ctx);
      try {
        pw.setDeltaBaseAsOffset(true);
        pw.setReuseDeltaCommits(false);

        addObjectsToPack(pw, ctx, pm);
        if (pw.getObjectCount() == 0) {
          List<DfsPackDescription> remove = toPrune();
          if (remove.size() > 0)
            objdb.commitPack(
                Collections.<DfsPackDescription>emptyList(),
                remove);
          return;
        }

        boolean rollback = true;
        DfsPackDescription pack = objdb.newPack(COMPACT);
        try {
          writePack(objdb, pack, pw, pm);
          writeIndex(objdb, pack, pw);

          PackWriter.Statistics stats = pw.getStatistics();
          pw.release();
          pw = null;

          pack.setPackStats(stats);
          objdb.commitPack(Collections.singletonList(pack), toPrune());
          newPacks.add(pack);
          newStats.add(stats);
          rollback = false;
        } finally {
          if (rollback)
            objdb.rollbackPack(Collections.singletonList(pack));
        }
      } finally {
        if (pw != null)
          pw.release();
      }
    } finally {
      rw = null;
      ctx.release();
    }
View Full Code Here


    if (db.getObjectDatabase() instanceof ObjectDirectory) {
      ObjectDirectory odb = (ObjectDirectory) db.getObjectDatabase();
      NullProgressMonitor m = NullProgressMonitor.INSTANCE;

      final File pack, idx;
      PackWriter pw = new PackWriter(db);
      try {
        Set<ObjectId> all = new HashSet<ObjectId>();
        for (Ref r : db.getAllRefs().values())
          all.add(r.getObjectId());
        pw.preparePack(m, all, Collections.<ObjectId> emptySet());

        final ObjectId name = pw.computeName();
        OutputStream out;

        pack = nameFor(odb, name, ".pack");
        out = new SafeBufferedOutputStream(new FileOutputStream(pack));
        try {
          pw.writePack(m, m, out);
        } finally {
          out.close();
        }
        pack.setReadOnly();

        idx = nameFor(odb, name, ".idx");
        out = new SafeBufferedOutputStream(new FileOutputStream(idx));
        try {
          pw.writeIndex(out);
        } finally {
          out.close();
        }
        idx.setReadOnly();
      } finally {
        pw.release();
      }

      odb.openPack(pack);
      updateServerInfo();
      prunePacked(odb);
View Full Code Here

   *
   * @throws IOException
   */
  @Test
  public void testContructor() throws IOException {
    writer = new PackWriter(config, db.newObjectReader());
    assertFalse(writer.isDeltaBaseAsOffset());
    assertTrue(config.isReuseDeltas());
    assertTrue(config.isReuseObjects());
    assertEquals(0, writer.getObjectCount());
  }
View Full Code Here

    config.setDeltaBaseAsOffset(false);
    assertFalse(config.isReuseDeltas());
    assertFalse(config.isReuseObjects());
    assertFalse(config.isDeltaBaseAsOffset());

    writer = new PackWriter(config, db.newObjectReader());
    writer.setDeltaBaseAsOffset(true);
    assertTrue(writer.isDeltaBaseAsOffset());
    assertFalse(config.isDeltaBaseAsOffset());
  }
View Full Code Here

  }

  private static PackIndex writePack(FileRepository repo,
      Set<? extends ObjectId> want, Set<ObjectIdSet> excludeObjects)
      throws IOException {
    PackWriter pw = new PackWriter(repo);
    pw.setDeltaBaseAsOffset(true);
    pw.setReuseDeltaCommits(false);
    for (ObjectIdSet idx : excludeObjects)
      pw.excludeObjects(idx);
    pw.preparePack(NullProgressMonitor.INSTANCE, want,
        Collections.<ObjectId> emptySet());
    String id = pw.computeName().getName();
    File packdir = new File(repo.getObjectsDirectory(), "pack");
    File packFile = new File(packdir, "pack-" + id + ".pack");
    FileOutputStream packOS = new FileOutputStream(packFile);
    pw.writePack(NullProgressMonitor.INSTANCE,
        NullProgressMonitor.INSTANCE, packOS);
    packOS.close();
    File idxFile = new File(packdir, "pack-" + id + ".idx");
    FileOutputStream idxOS = new FileOutputStream(idxFile);
    pw.writeIndex(idxOS);
    idxOS.close();
    pw.release();
    return PackIndex.open(idxFile);
  }
View Full Code Here

  private void createVerifyOpenPack(final Set<ObjectId> interestings,
      final Set<ObjectId> uninterestings, final boolean thin,
      final boolean ignoreMissingUninteresting, boolean useBitmaps)
      throws MissingObjectException, IOException {
    NullProgressMonitor m = NullProgressMonitor.INSTANCE;
    writer = new PackWriter(config, db.newObjectReader());
    writer.setUseBitmaps(useBitmaps);
    writer.setThin(thin);
    writer.setIgnoreMissingUninteresting(ignoreMissingUninteresting);
    writer.preparePack(m, interestings, uninterestings);
    writer.writePack(m, m, os);
View Full Code Here

  }

  private void createVerifyOpenPack(final List<RevObject> objectSource)
      throws MissingObjectException, IOException {
    NullProgressMonitor m = NullProgressMonitor.INSTANCE;
    writer = new PackWriter(config, db.newObjectReader());
    writer.preparePack(objectSource.iterator());
    assertEquals(objectSource.size(), writer.getObjectCount());
    writer.writePack(m, m, os);
    writer.release();
    verifyOpenPack(false);
View Full Code Here

      throws IOException, MissingObjectException,
      StoredObjectRepresentationNotAvailableException {
    ObjectReuseAsIs asis = (ObjectReuseAsIs) reader;
    ObjectToPack target = asis.newObjectToPack(obj, obj.getType());

    PackWriter pw = new PackWriter(reader) {
      @Override
      public void select(ObjectToPack otp, StoredObjectRepresentation next) {
        otp.select(next);
      }
    };
View Full Code Here

  public void writeBundle(ProgressMonitor monitor, OutputStream os)
      throws IOException {
    PackConfig pc = packConfig;
    if (pc == null)
      pc = new PackConfig(db);
    PackWriter packWriter = new PackWriter(pc, db.newObjectReader());
    try {
      final HashSet<ObjectId> inc = new HashSet<ObjectId>();
      final HashSet<ObjectId> exc = new HashSet<ObjectId>();
      inc.addAll(include.values());
      for (final RevCommit r : assume)
        exc.add(r.getId());
      packWriter.setIndexDisabled(true);
      packWriter.setDeltaBaseAsOffset(true);
      packWriter.setThin(exc.size() > 0);
      packWriter.setReuseValidatingObjects(false);
      if (exc.size() == 0)
        packWriter.setTagTargets(tagTargets);
      packWriter.preparePack(monitor, inc, exc);

      final Writer w = new OutputStreamWriter(os, Constants.CHARSET);
      w.write(TransportBundle.V2_BUNDLE_SIGNATURE);
      w.write('\n');

      final char[] tmp = new char[Constants.OBJECT_ID_STRING_LENGTH];
      for (final RevCommit a : assume) {
        w.write('-');
        a.copyTo(tmp, w);
        if (a.getRawBuffer() != null) {
          w.write(' ');
          w.write(a.getShortMessage());
        }
        w.write('\n');
      }
      for (final Map.Entry<String, ObjectId> e : include.entrySet()) {
        e.getValue().copyTo(tmp, w);
        w.write(' ');
        w.write(e.getKey());
        w.write('\n');
      }

      w.write('\n');
      w.flush();
      packWriter.writePack(monitor, monitor, os);
    } finally {
      packWriter.release();
    }
  }
View Full Code Here

  private void writePack(final Map<String, RemoteRefUpdate> refUpdates,
      final ProgressMonitor monitor) throws IOException {
    Set<ObjectId> remoteObjects = new HashSet<ObjectId>();
    Set<ObjectId> newObjects = new HashSet<ObjectId>();

    final PackWriter writer = new PackWriter(transport.getPackConfig(),
        local.newObjectReader());
    try {

      for (final Ref r : getRefs())
        remoteObjects.add(r.getObjectId());
      remoteObjects.addAll(additionalHaves);
      for (final RemoteRefUpdate r : refUpdates.values()) {
        if (!ObjectId.zeroId().equals(r.getNewObjectId()))
          newObjects.add(r.getNewObjectId());
      }

      writer.setIndexDisabled(true);
      writer.setUseCachedPacks(true);
      writer.setUseBitmaps(true);
      writer.setThin(thinPack);
      writer.setReuseValidatingObjects(false);
      writer.setDeltaBaseAsOffset(capableOfsDelta);
      writer.preparePack(monitor, newObjects, remoteObjects);
      writer.writePack(monitor, monitor, out);
    } finally {
      writer.release();
    }
    packTransferTime = writer.getStatistics().getTimeWriting();
  }
View Full Code Here

TOP

Related Classes of org.eclipse.jgit.internal.storage.pack.PackWriter$State

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.