Package org.eclipse.jgit.dircache

Examples of org.eclipse.jgit.dircache.DirCacheIterator


    return this;
  }

  private void checkoutPathsFromIndex(TreeWalk treeWalk, DirCache dc)
      throws IOException {
    DirCacheIterator dci = new DirCacheIterator(dc);
    treeWalk.addTree(dci);

    final ObjectReader r = treeWalk.getObjectReader();
    DirCacheEditor editor = dc.editor();
    while (treeWalk.next()) {
      DirCacheEntry entry = dci.getDirCacheEntry();
      // Only add one edit per path
      if (entry != null && entry.getStage() > DirCacheEntry.STAGE_1)
        continue;
      editor.add(new PathEdit(treeWalk.getPathString()) {
        public void apply(DirCacheEntry ent) {
View Full Code Here


    write(new File(folder, "folder.txt"), "folder change");

    PatchIdDiffFormatter df = new PatchIdDiffFormatter();
    df.setRepository(db);
    df.setPathFilter(PathFilter.create("folder"));
    DirCacheIterator oldTree = new DirCacheIterator(db.readDirCache());
    FileTreeIterator newTree = new FileTreeIterator(db);
    df.format(oldTree, newTree);
    df.flush();

    assertEquals("1ff64e0f9333e9b81967c3e8d7a81362b14d5441", df
View Full Code Here

    write(new File(folder, "folder.txt"), "\n\n\n\nfolder change");

    PatchIdDiffFormatter df = new PatchIdDiffFormatter();
    df.setRepository(db);
    df.setPathFilter(PathFilter.create("folder"));
    DirCacheIterator oldTree = new DirCacheIterator(db.readDirCache());
    FileTreeIterator newTree = new FileTreeIterator(db);
    df.format(oldTree, newTree);
    df.flush();

    assertEquals("08fca5ac531383eb1da8bf6b6f7cf44411281407", df
        .getCalulatedPatchId().name());

    write(new File(folder, "folder.txt"), "a\n\n\n\nfolder");
    git.add().addFilepattern(".").call();
    git.commit().setMessage("Initial commit").call();
    write(new File(folder, "folder.txt"), "a\n\n\n\nfolder change");

    df = new PatchIdDiffFormatter();
    df.setRepository(db);
    df.setPathFilter(PathFilter.create("folder"));
    oldTree = new DirCacheIterator(db.readDirCache());
    newTree = new FileTreeIterator(db);
    df.format(oldTree, newTree);
    df.flush();

    assertEquals("08fca5ac531383eb1da8bf6b6f7cf44411281407", df
View Full Code Here

    ByteArrayOutputStream os = new ByteArrayOutputStream();
    DiffFormatter dfmt = new DiffFormatter(new SafeBufferedOutputStream(os));
    dfmt.setRepository(db);
    dfmt.setPathFilter(PathFilter.create("folder"));
    DirCacheIterator oldTree = new DirCacheIterator(db.readDirCache());
    FileTreeIterator newTree = new FileTreeIterator(db);
    dfmt.format(oldTree, newTree);
    dfmt.flush();

    String actual = os.toString("UTF-8");
View Full Code Here

      }
    });
    assertTrue(dce.commit());
    new Git(db).commit().setMessage("Adding link").call();
    new Git(db).reset().setMode(ResetType.HARD).call();
    DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
    FileTreeIterator fti = new FileTreeIterator(db);

    // self-check
    assertEquals("link", fti.getEntryPathString());
    assertEquals("link", dci.getEntryPathString());

    // test
    assertFalse(fti.isModified(dci.getDirCacheEntry(), true,
        db.newObjectReader()));
  }
View Full Code Here

      }
    });
    assertTrue(dce.commit());
    new Git(db).commit().setMessage("Adding link").call();
    new Git(db).reset().setMode(ResetType.HARD).call();
    DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
    FileTreeIterator fti = new FileTreeIterator(db);

    // self-check
    assertEquals("link", fti.getEntryPathString());
    assertEquals("link", dci.getEntryPathString());

    // test
    assertFalse(fti.isModified(dci.getDirCacheEntry(), true,
        db.newObjectReader()));
  }
View Full Code Here

    new Git(db).commit().setMessage("Adding link").call();
    new Git(db).reset().setMode(ResetType.HARD).call();

    FileUtils.delete(new File(trash, "link"), FileUtils.NONE);
    FS.DETECTED.createSymLink(new File(trash, "link"), "newtarget");
    DirCacheIterator dci = new DirCacheIterator(db.readDirCache());
    FileTreeIterator fti = new FileTreeIterator(db);

    // self-check
    assertEquals("link", fti.getEntryPathString());
    assertEquals("link", dci.getEntryPathString());

    // test
    assertTrue(fti.isModified(dci.getDirCacheEntry(), true,
        db.newObjectReader()));
  }
View Full Code Here

  public static SubmoduleWalk forIndex(Repository repository)
      throws IOException {
    SubmoduleWalk generator = new SubmoduleWalk(repository);
    try {
      DirCache index = repository.readDirCache();
      generator.setTree(new DirCacheIterator(index));
    } catch (IOException e) {
      generator.release();
      throw e;
    }
    return generator;
View Full Code Here

    // determine whether we need to commit
    TreeWalk treeWalk = new TreeWalk(repo);
    treeWalk.reset();
    treeWalk.setRecursive(true);
    treeWalk.addTree(new DirCacheIterator(dc));
    ObjectId id = repo.resolve(Constants.HEAD + "^{tree}"); //$NON-NLS-1$
    if (id == null)
      throw new NoHeadException(
          JGitText.get().cannotRebaseWithoutCurrentHead);
View Full Code Here

    final int cnt = tw.getTreeCount();
    final int wm = tw.getRawMode(workingTree);
    WorkingTreeIterator wi = workingTree(tw);
    String path = tw.getPathString();

    DirCacheIterator di = tw.getTree(dirCache, DirCacheIterator.class);
    if (di != null) {
      DirCacheEntry dce = di.getDirCacheEntry();
      if (dce != null) {
        if (dce.isAssumeValid())
          return false;
        // Never filter index entries with a stage different from 0
        if (dce.getStage() != 0)
          return true;
      }
    }

    if (!tw.isPostOrderTraversal()) {
      // detect untracked Folders
      // Whenever we enter a folder in the workingtree assume it will
      // contain only untracked files and add it to
      // untrackedParentFolders. If we later find tracked files we will
      // remove it from this list
      if (FileMode.TREE.equals(wm)
          && !(honorIgnores && wi.isEntryIgnored())) {
        // Clean untrackedParentFolders. This potentially moves entries
        // from untrackedParentFolders to untrackedFolders
        copyUntrackedFolders(path);
        // add the folder we just entered to untrackedParentFolders
        untrackedParentFolders.addFirst(path);
      }

      // detect untracked Folders
      // Whenever we see a tracked file we know that all of its parent
      // folders do not belong into untrackedParentFolders anymore. Clean
      // it.
      for (int i = 0; i < cnt; i++) {
        int rmode = tw.getRawMode(i);
        if (i != workingTree && rmode != FileMode.TYPE_MISSING
            && FileMode.TREE.equals(rmode)) {
          untrackedParentFolders.clear();
          break;
        }
      }
    }

    // If the working tree file doesn't exist, it does exist for at least
    // one other so include this difference.
    if (wm == 0)
      return true;

    // If the path does not appear in the DirCache and its ignored
    // we can avoid returning a result here, but only if its not in any
    // other tree.
    final int dm = tw.getRawMode(dirCache);
    if (dm == FileMode.TYPE_MISSING) {
      if (honorIgnores && wi.isEntryIgnored()) {
        ignoredPaths.add(wi.getEntryPathString());
        int i = 0;
        for (; i < cnt; i++) {
          if (i == dirCache || i == workingTree)
            continue;
          if (tw.getRawMode(i) != FileMode.TYPE_MISSING)
            break;
        }

        // If i is cnt then the path does not appear in any other tree,
        // and this working tree entry can be safely ignored.
        return i == cnt ? false : true;
      } else {
        // In working tree and not ignored, and not in DirCache.
        return true;
      }
    }

    // Always include subtrees as WorkingTreeIterator cannot provide
    // efficient elimination of unmodified subtrees.
    if (tw.isSubtree())
      return true;

    // Try the inexpensive comparisons between index and all real trees
    // first. Only if we don't find a diff here we have to bother with
    // the working tree
    for (int i = 0; i < cnt; i++) {
      if (i == dirCache || i == workingTree)
        continue;
      if (tw.getRawMode(i) != dm || !tw.idEqual(i, dirCache))
        return true;
    }

    // Only one chance left to detect a diff: between index and working
    // tree. Make use of the WorkingTreeIterator#isModified() method to
    // avoid computing SHA1 on filesystem content if not really needed.
    return wi.isModified(di.getDirCacheEntry(), true, tw.getObjectReader());
  }
View Full Code Here

TOP

Related Classes of org.eclipse.jgit.dircache.DirCacheIterator

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.