Package org.eclipse.jgit.lib

Examples of org.eclipse.jgit.lib.ObjectReader


abstract class AbstractFetchCommand extends TextBuiltin {
  @Option(name = "--verbose", aliases = { "-v" }, usage = "usage_beMoreVerbose")
  private boolean verbose;

  protected void showFetchResult(final FetchResult r) throws IOException {
    ObjectReader reader = db.newObjectReader();
    try {
      boolean shownURI = false;
      for (final TrackingRefUpdate u : r.getTrackingRefUpdates()) {
        if (!verbose && u.getResult() == RefUpdate.Result.NO_CHANGE)
          continue;

        final char type = shortTypeOf(u.getResult());
        final String longType = longTypeOf(reader, u);
        final String src = abbreviateRef(u.getRemoteName(), false);
        final String dst = abbreviateRef(u.getLocalName(), true);

        if (!shownURI) {
          outw.println(MessageFormat.format(CLIText.get().fromURI,
              r.getURI()));
          shownURI = true;
        }

        outw.format(" %c %-17s %-10s -> %s", valueOf(type), longType, //$NON-NLS-1$
            src, dst);
        outw.println();
      }
    } finally {
      reader.release();
    }
    showRemoteMessages(errw, r.getMessages());
  }
View Full Code Here


    }
    if (id == null)
      throw new CmdLineException(MessageFormat.format(CLIText.get().notATree, name));

    final CanonicalTreeParser p = new CanonicalTreeParser();
    final ObjectReader curs = clp.getRepository().newObjectReader();
    try {
      p.reset(curs, clp.getRevWalk().parseTree(id));
    } catch (MissingObjectException e) {
      throw new CmdLineException(MessageFormat.format(CLIText.get().notATree, name));
    } catch (IncorrectObjectTypeException e) {
      throw new CmdLineException(MessageFormat.format(CLIText.get().notATree, name));
    } catch (IOException e) {
      throw new CmdLineException(MessageFormat.format(CLIText.get().cannotReadBecause, name, e.getMessage()));
    } finally {
      curs.release();
    }

    setter.addValue(p);
    return 1;
  }
View Full Code Here

    push.setRemote(remote);
    push.setThin(thin);
    push.setTimeout(timeout);
    Iterable<PushResult> results = push.call();
    for (PushResult result : results) {
      ObjectReader reader = db.newObjectReader();
      try {
        printPushResult(reader, result.getURI(), result);
      } finally {
        reader.release();
      }
    }
  }
View Full Code Here

      throws IOException {
    final ObjectId id = db.resolve(name);
    if (id == null)
      throw new IllegalArgumentException(name);
    final CanonicalTreeParser p = new CanonicalTreeParser();
    final ObjectReader or = db.newObjectReader();
    try {
      p.reset(or, new RevWalk(db).parseTree(id));
      return p;
    } finally {
      or.release();
    }
  }
View Full Code Here

   */
  public RevCommit call() throws GitAPIException {
    checkCallable();

    Ref head = getHead();
    ObjectReader reader = repo.newObjectReader();
    try {
      RevCommit headCommit = parseCommit(reader, head.getObjectId());
      DirCache cache = repo.lockDirCache();
      ObjectInserter inserter = repo.newObjectInserter();
      ObjectId commitId;
      try {
        TreeWalk treeWalk = new TreeWalk(reader);
        treeWalk.setRecursive(true);
        treeWalk.addTree(headCommit.getTree());
        treeWalk.addTree(new DirCacheIterator(cache));
        treeWalk.addTree(new FileTreeIterator(repo));
        treeWalk.setFilter(AndTreeFilter.create(new SkipWorkTreeFilter(
            1), new IndexDiffFilter(1, 2)));

        // Return null if no local changes to stash
        if (!treeWalk.next())
          return null;

        MutableObjectId id = new MutableObjectId();
        List<PathEdit> wtEdits = new ArrayList<PathEdit>();
        List<String> wtDeletes = new ArrayList<String>();
        List<DirCacheEntry> untracked = new ArrayList<DirCacheEntry>();
        boolean hasChanges = false;
        do {
          AbstractTreeIterator headIter = treeWalk.getTree(0,
              AbstractTreeIterator.class);
          DirCacheIterator indexIter = treeWalk.getTree(1,
              DirCacheIterator.class);
          WorkingTreeIterator wtIter = treeWalk.getTree(2,
              WorkingTreeIterator.class);
          if (indexIter != null
              && !indexIter.getDirCacheEntry().isMerged())
            throw new UnmergedPathsException(
                new UnmergedPathException(
                    indexIter.getDirCacheEntry()));
          if (wtIter != null) {
            if (indexIter == null && headIter == null
                && !includeUntracked)
              continue;
            hasChanges = true;
            if (indexIter != null && wtIter.idEqual(indexIter))
              continue;
            if (headIter != null && wtIter.idEqual(headIter))
              continue;
            treeWalk.getObjectId(id, 0);
            final DirCacheEntry entry = new DirCacheEntry(
                treeWalk.getRawPath());
            entry.setLength(wtIter.getEntryLength());
            entry.setLastModified(wtIter.getEntryLastModified());
            entry.setFileMode(wtIter.getEntryFileMode());
            long contentLength = wtIter.getEntryContentLength();
            InputStream in = wtIter.openEntryStream();
            try {
              entry.setObjectId(inserter.insert(
                  Constants.OBJ_BLOB, contentLength, in));
            } finally {
              in.close();
            }

            if (indexIter == null && headIter == null)
              untracked.add(entry);
            else
              wtEdits.add(new PathEdit(entry) {
                public void apply(DirCacheEntry ent) {
                  ent.copyMetaData(entry);
                }
              });
          }
          hasChanges = true;
          if (wtIter == null && headIter != null)
            wtDeletes.add(treeWalk.getPathString());
        } while (treeWalk.next());

        if (!hasChanges)
          return null;

        String branch = Repository.shortenRefName(head.getTarget()
            .getName());

        // Commit index changes
        CommitBuilder builder = createBuilder();
        builder.setParentId(headCommit);
        builder.setTreeId(cache.writeTree(inserter));
        builder.setMessage(MessageFormat.format(indexMessage, branch,
            headCommit.abbreviate(7).name(),
            headCommit.getShortMessage()));
        ObjectId indexCommit = inserter.insert(builder);

        // Commit untracked changes
        ObjectId untrackedCommit = null;
        if (!untracked.isEmpty()) {
          DirCache untrackedDirCache = DirCache.newInCore();
          DirCacheBuilder untrackedBuilder = untrackedDirCache
              .builder();
          for (DirCacheEntry entry : untracked)
            untrackedBuilder.add(entry);
          untrackedBuilder.finish();

          builder.setParentIds(new ObjectId[0]);
          builder.setTreeId(untrackedDirCache.writeTree(inserter));
          builder.setMessage(MessageFormat.format(MSG_UNTRACKED,
              branch, headCommit.abbreviate(7).name(),
              headCommit.getShortMessage()));
          untrackedCommit = inserter.insert(builder);
        }

        // Commit working tree changes
        if (!wtEdits.isEmpty() || !wtDeletes.isEmpty()) {
          DirCacheEditor editor = cache.editor();
          for (PathEdit edit : wtEdits)
            editor.add(edit);
          for (String path : wtDeletes)
            editor.add(new DeletePath(path));
          editor.finish();
        }
        builder.setParentId(headCommit);
        builder.addParentId(indexCommit);
        if (untrackedCommit != null)
          builder.addParentId(untrackedCommit);
        builder.setMessage(MessageFormat.format(
            workingDirectoryMessage, branch,
            headCommit.abbreviate(7).name(),
            headCommit.getShortMessage()));
        builder.setTreeId(cache.writeTree(inserter));
        commitId = inserter.insert(builder);
        inserter.flush();

        updateStashRef(commitId, builder.getAuthor(),
            builder.getMessage());

        // Remove untracked files
        if (includeUntracked) {
          for (DirCacheEntry entry : untracked) {
            File file = new File(repo.getWorkTree(),
                entry.getPathString());
            FileUtils.delete(file);
          }
        }

      } finally {
        inserter.release();
        cache.unlock();
      }

      // Hard reset to HEAD
      new ResetCommand(repo).setMode(ResetType.HARD).call();

      // Return stashed commit
      return parseCommit(reader, commitId);
    } catch (IOException e) {
      throw new JGitInternalException(JGitText.get().stashFailed, e);
    } finally {
      reader.release();
    }
  }
View Full Code Here

  }

  @Test
  public void testCreateSubtreeIterator() throws Exception {
    final EmptyTreeIterator etp = new EmptyTreeIterator();
    final ObjectReader reader = db.newObjectReader();
    final AbstractTreeIterator sub = etp.createSubtreeIterator(reader);
    assertNotNull(sub);
    assertTrue(sub.first());
    assertTrue(sub.eof());
    assertTrue(sub instanceof EmptyTreeIterator);
View Full Code Here

      @Override
      public void stopWalk() {
        called[0] = true;
      }
    };
    final ObjectReader reader = db.newObjectReader();
    parent.createSubtreeIterator(reader).stopWalk();
    assertTrue(called[0]);
  }
View Full Code Here

    top.next(1);
    assertFalse(top.first());
    assertFalse(top.eof());
    assertEquals(FileMode.TREE.getBits(), top.mode);

    final ObjectReader reader = db.newObjectReader();
    final AbstractTreeIterator sub = top.createSubtreeIterator(reader);
    assertTrue(sub instanceof FileTreeIterator);
    final FileTreeIterator subfti = (FileTreeIterator) sub;
    assertTrue(sub.first());
    assertFalse(sub.eof());
View Full Code Here

    }
    assertEquals(MetadataDiff.EQUAL, fti.compareMetadata(dce));
    ObjectId fromRaw = ObjectId.fromRaw(fti.idBuffer(), fti.idOffset());
    assertEquals("6b584e8ece562ebffc15d38808cd6b98fc3d97ea",
        fromRaw.getName());
    ObjectReader objectReader = db.newObjectReader();
    assertFalse(fti.isModified(dce, false, objectReader));
    objectReader.release();
  }
View Full Code Here

    FileTreeIterator fti = new FileTreeIterator(trash, db.getFS(), db
        .getConfig().get(WorkingTreeOptions.KEY));
    while (!fti.getEntryPathString().equals("symlink"))
      fti.next(1);
    ObjectReader objectReader = db.newObjectReader();
    assertFalse(fti.isModified(dce, false, objectReader));
    objectReader.release();
  }
View Full Code Here

TOP

Related Classes of org.eclipse.jgit.lib.ObjectReader

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.