Package org.eclipse.jgit.treewalk

Examples of org.eclipse.jgit.treewalk.CanonicalTreeParser


    while (treeWalk.next()) {
      String path = treeWalk.getPathString();
      // check if current entry's path matches a specified path
      int pos = lookupOnly(path);

      CanonicalTreeParser hTree = null;
      if (hIdx != -1)
        hTree = treeWalk.getTree(hIdx, CanonicalTreeParser.class);

      DirCacheIterator dcTree = treeWalk.getTree(dcIdx,
          DirCacheIterator.class);

      if (pos >= 0) {
        // include entry in commit

        FileTreeIterator fTree = treeWalk.getTree(fIdx,
            FileTreeIterator.class);

        // check if entry refers to a tracked file
        boolean tracked = dcTree != null || hTree != null;
        if (!tracked)
          break;

        // for an unmerged path, DirCacheBuildIterator will yield 3
        // entries, we only want to add one
        if (path.equals(lastAddedFile))
          continue;

        lastAddedFile = path;

        if (fTree != null) {
          // create a new DirCacheEntry with data retrieved from disk
          final DirCacheEntry dcEntry = new DirCacheEntry(path);
          long entryLength = fTree.getEntryLength();
          dcEntry.setLength(entryLength);
          dcEntry.setLastModified(fTree.getEntryLastModified());
          dcEntry.setFileMode(fTree.getIndexFileMode(dcTree));

          boolean objectExists = (dcTree != null && fTree
              .idEqual(dcTree))
              || (hTree != null && fTree.idEqual(hTree));
          if (objectExists) {
            dcEntry.setObjectId(fTree.getEntryObjectId());
          } else {
            if (FileMode.GITLINK.equals(dcEntry.getFileMode()))
              dcEntry.setObjectId(fTree.getEntryObjectId());
            else {
              // insert object
              if (inserter == null)
                inserter = repo.newObjectInserter();
              long contentLength = fTree.getEntryContentLength();
              InputStream inputStream = fTree.openEntryStream();
              try {
                dcEntry.setObjectId(inserter.insert(
                    Constants.OBJ_BLOB, contentLength,
                    inputStream));
              } finally {
                inputStream.close();
              }
            }
          }

          // add to existing index
          existingBuilder.add(dcEntry);
          // add to temporary in-core index
          tempBuilder.add(dcEntry);

          if (emptyCommit
              && (hTree == null || !hTree.idEqual(fTree) || hTree
                  .getEntryRawMode() != fTree
                  .getEntryRawMode()))
            // this is a change
            emptyCommit = false;
        } else {
          // if no file exists on disk, neither add it to
          // index nor to temporary in-core index

          if (emptyCommit && hTree != null)
            // this is a change
            emptyCommit = false;
        }

        // keep track of processed path
        onlyProcessed[pos] = true;
      } else {
        // add entries from HEAD for all other paths
        if (hTree != null) {
          // create a new DirCacheEntry with data retrieved from HEAD
          final DirCacheEntry dcEntry = new DirCacheEntry(path);
          dcEntry.setObjectId(hTree.getEntryObjectId());
          dcEntry.setFileMode(hTree.getEntryFileMode());

          // add to temporary in-core index
          tempBuilder.add(dcEntry);
        }
View Full Code Here


      if (cached) {
        if (oldTree == null) {
          ObjectId head = db.resolve(HEAD + "^{tree}"); //$NON-NLS-1$
          if (head == null)
            die(MessageFormat.format(CLIText.get().notATree, HEAD));
          CanonicalTreeParser p = new CanonicalTreeParser();
          ObjectReader reader = db.newObjectReader();
          try {
            p.reset(reader, head);
          } finally {
            reader.release();
          }
          oldTree = p;
        }
View Full Code Here

   *             a tree cannot be read to iterate through its entries.
   */
  public void addTree(final byte[] pathPrefix, final int stage,
      final ObjectReader reader, final AnyObjectId tree) throws IOException {
    final TreeWalk tw = new TreeWalk(reader);
    tw.addTree(new CanonicalTreeParser(pathPrefix, reader, tree
        .toObjectId()));
    tw.setRecursive(true);
    if (tw.next()) {
      final DirCacheEntry newEntry = toEntry(stage, tw);
      beforeAdd(newEntry);
View Full Code Here

    objectsMap = objects;
    edgeObjects = edges;

    alreadyProcessed = new IntSet();
    treeCache = new ObjectIdOwnerMap<TreeWithData>();
    parser = new CanonicalTreeParser();
    idBuf = new MutableObjectId();
  }
View Full Code Here

        tw.addTree(new EmptyTreeIterator());
      tw.setFilter(PathFilterGroup.createFromStrings(filepaths));
      tw.setRecursive(true);

      while (tw.next()) {
        final CanonicalTreeParser tree = tw.getTree(1,
            CanonicalTreeParser.class);
        // only keep file in index if it's in the commit
        if (tree != null) {
            // revert index to commit
          DirCacheEntry entry = new DirCacheEntry(tw.getRawPath());
          entry.setFileMode(tree.getEntryFileMode());
          entry.setObjectId(tree.getEntryObjectId());
          builder.add(entry);
        }
      }

      builder.commit();
View Full Code Here

      if (cached) {
        if (oldTree == null) {
          ObjectId head = repo.resolve(HEAD + "^{tree}"); //$NON-NLS-1$
          if (head == null)
            throw new NoHeadException(JGitText.get().cannotReadTree);
          CanonicalTreeParser p = new CanonicalTreeParser();
          ObjectReader reader = repo.newObjectReader();
          try {
            p.reset(reader, head);
          } finally {
            reader.release();
          }
          oldTree = p;
        }
View Full Code Here

                ent.setObjectId(subId);
              }
            })
        .create());

    final CanonicalTreeParser p = new CanonicalTreeParser();
    p.reset(testDb.getRevWalk().getObjectReader(), commit.getTree());
    SubmoduleWalk gen = SubmoduleWalk.forPath(db, p, "sub");
    assertEquals(path, gen.getPath());
    assertEquals(subId, gen.getObjectId());
    assertEquals(new File(db.getWorkTree(), path), gen.getDirectory());
    assertNull(gen.getConfigUpdate());
View Full Code Here

   *            ID of a tree containing .gitmodules
   * @return this generator
   * @throws IOException
   */
  public SubmoduleWalk setRootTree(final AnyObjectId id) throws IOException {
    final CanonicalTreeParser p = new CanonicalTreeParser();
    p.reset(walk.getObjectReader(), id);
    rootTree = p;
    modulesConfig = null;
    return this;
  }
View Full Code Here

  }

  private AbstractTreeIterator makeIteratorFromTreeOrNull(RevTree tree)
      throws IncorrectObjectTypeException, IOException {
    if (tree != null) {
      CanonicalTreeParser parser = new CanonicalTreeParser();
      parser.reset(reader, tree);
      return parser;
    } else
      return new EmptyTreeIterator();
  }
View Full Code Here

      if (cached) {
        if (oldTree == null) {
          ObjectId head = repo.resolve(HEAD + "^{tree}"); //$NON-NLS-1$
          if (head == null)
            throw new NoHeadException(JGitText.get().cannotReadTree);
          CanonicalTreeParser p = new CanonicalTreeParser();
          ObjectReader reader = repo.newObjectReader();
          try {
            p.reset(reader, head);
          } finally {
            reader.release();
          }
          oldTree = p;
        }
View Full Code Here

TOP

Related Classes of org.eclipse.jgit.treewalk.CanonicalTreeParser

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.