Package org.eclipse.jgit.lib

Examples of org.eclipse.jgit.lib.ObjectReader


    ObjectId id2 = ins.insert(Constants.OBJ_BLOB, Constants.encode("bar"));
    String abbr1 = ObjectId.toString(id1).substring(0, 4);
    String abbr2 = ObjectId.toString(id2).substring(0, 4);
    assertFalse(abbr1.equals(abbr2));

    ObjectReader reader = ins.newReader();
    Collection<ObjectId> objs;
    objs = reader.resolve(AbbreviatedObjectId.fromString(abbr1));
    assertEquals(1, objs.size());
    assertEquals(id1, objs.iterator().next());

    objs = reader.resolve(AbbreviatedObjectId.fromString(abbr2));
    assertEquals(1, objs.size());
    assertEquals(id2, objs.iterator().next());
  }
View Full Code Here


    int commits = 0;
    int minN = Integer.MAX_VALUE;
    int maxN = 0;

    AbbreviatedObjectId startId;
    ObjectReader or = db.newObjectReader();
    try {
      final MutableObjectId id = new MutableObjectId();
      RevWalk rw = new RevWalk(or);
      TreeWalk tw = new TreeWalk(or);
      tw.setFilter(TreeFilter.ANY_DIFF);
      tw.setRecursive(true);

      ObjectId start = db.resolve(Constants.HEAD);
      startId = or.abbreviate(start);
      rw.markStart(rw.parseCommit(start));
      for (;;) {
        final RevCommit c = rw.next();
        if (c == null)
          break;
        commits++;
        if (c.getParentCount() != 1)
          continue;

        RevCommit p = c.getParent(0);
        rw.parseHeaders(p);
        tw.reset(p.getTree(), c.getTree());
        while (tw.next()) {
          if (!isFile(tw, 0) || !isFile(tw, 1))
            continue;

          byte[] raw0;
          try {
            tw.getObjectId(id, 0);
            raw0 = or.open(id).getCachedBytes(textLimit * 1024);
          } catch (LargeObjectException tooBig) {
            continue;
          }
          if (RawText.isBinary(raw0))
            continue;

          byte[] raw1;
          try {
            tw.getObjectId(id, 1);
            raw1 = or.open(id).getCachedBytes(textLimit * 1024);
          } catch (LargeObjectException tooBig) {
            continue;
          }
          if (RawText.isBinary(raw1))
            continue;

          RawText txt0 = new RawText(raw0);
          RawText txt1 = new RawText(raw1);

          minN = Math.min(minN, txt0.size() + txt1.size());
          maxN = Math.max(maxN, txt0.size() + txt1.size());

          for (Test test : all)
            testOne(test, txt0, txt1);
          files++;
        }
        if (count > 0 && files > count)
          break;
      }
    } finally {
      or.release();
    }

    Collections.sort(all, new Comparator<Test>() {
      public int compare(Test a, Test b) {
        int cmp = Long.signum(a.runningTimeNanos - b.runningTimeNanos);
View Full Code Here

  private void run(Repository db) throws Exception {
    List<Function> all = init();

    long fileCnt = 0;
    long lineCnt = 0;
    ObjectReader or = db.newObjectReader();
    try {
      final MutableObjectId id = new MutableObjectId();
      RevWalk rw = new RevWalk(or);
      TreeWalk tw = new TreeWalk(or);
      tw.reset(rw.parseTree(db.resolve(Constants.HEAD)));
      tw.setRecursive(true);

      while (tw.next()) {
        FileMode fm = tw.getFileMode(0);
        if (!FileMode.REGULAR_FILE.equals(fm)
            && !FileMode.EXECUTABLE_FILE.equals(fm))
          continue;

        byte[] raw;
        try {
          tw.getObjectId(id, 0);
          raw = or.open(id).getCachedBytes(textLimit * 1024);
        } catch (LargeObjectException tooBig) {
          continue;
        }

        if (RawText.isBinary(raw))
          continue;

        RawText txt = new RawText(raw);
        int[] lines = new int[txt.size()];
        int cnt = 0;
        HashSet<Line> u = new HashSet<Line>();
        for (int i = 0; i < txt.size(); i++) {
          if (u.add(new Line(txt, i)))
            lines[cnt++] = i;
        }

        fileCnt++;
        lineCnt += cnt;

        for (Function fun : all)
          testOne(fun, txt, lines, cnt);
      }
    } finally {
      or.release();
    }

    if (db.getDirectory() != null) {
      String name = db.getDirectory().getName();
      File parent = db.getDirectory().getParentFile();
View Full Code Here

  @Argument(index = 0)
  private ObjectId objectId;

  @Override
  protected void run() throws Exception {
    ObjectReader reader = db.newObjectReader();
    RevObject obj = new RevWalk(reader).parseAny(objectId);
    byte[] delta = getDelta(reader, obj);

    // We're crossing our fingers that this will be a delta. Double
    // check the size field in the header, it should match.
    //
    long size = reader.getObjectSize(obj, obj.getType());
    try {
      if (BinaryDelta.getResultSize(delta) != size)
        throw die("Object " + obj.name() + " is not a delta");
    } catch (ArrayIndexOutOfBoundsException bad) {
      throw die("Object " + obj.name() + " is not a delta");
View Full Code Here

        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;
        }
        newTree = new DirCacheIterator(repo.readDirCache());
      } else {
View Full Code Here

        String msg = NLS.bind("Failed to generate diff for {0}, no HEAD", scope);
        statusHandler.handleRequest(request, response, new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_BAD_REQUEST, msg, null));
        return null;
      }
      CanonicalTreeParser p = new CanonicalTreeParser();
      ObjectReader reader = db.newObjectReader();
      try {
        p.reset(reader, head);
      } finally {
        reader.release();
      }
      oldTree = p;
      newTree = new DirCacheIterator(db.readDirCache());
    } else if (scope.equals(GitConstants.KEY_DIFF_DEFAULT)) {
      oldTree = new DirCacheIterator(db.readDirCache());
View Full Code Here

  private AbstractTreeIterator getTreeIterator(Repository db, String name) 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

    checkCallable();

    if (!ignoreRepositoryState && repo.getRepositoryState() != RepositoryState.SAFE)
      throw new WrongRepositoryStateException(MessageFormat.format(JGitText.get().stashApplyOnUnsafeRepository, repo.getRepositoryState()));

    ObjectReader reader = repo.newObjectReader();
    try {
      RevWalk revWalk = new RevWalk(reader);

      ObjectId headCommit = repo.resolve(Constants.HEAD);
      if (headCommit == null)
        throw new NoHeadException(JGitText.get().stashApplyWithoutHead);

      final ObjectId stashId = getStashId();
      RevCommit stashCommit = revWalk.parseCommit(stashId);
      if (stashCommit.getParentCount() < 2 || stashCommit.getParentCount() > 3)
        throw new JGitInternalException(MessageFormat.format(JGitText.get().stashCommitIncorrectNumberOfParents, stashId.name(),
            Integer.valueOf(stashCommit.getParentCount())));

      ObjectId headTree = repo.resolve(Constants.HEAD + "^{tree}"); //$NON-NLS-1$
      ObjectId stashIndexCommit = revWalk.parseCommit(stashCommit.getParent(1));
      ObjectId stashHeadCommit = stashCommit.getParent(0);
      ObjectId untrackedCommit = null;
      if (applyUntracked && stashCommit.getParentCount() == 3)
        untrackedCommit = revWalk.parseCommit(stashCommit.getParent(2));

      ResolveMerger merger = (ResolveMerger) strategy.newMerger(repo);
      merger.setCommitNames(new String[] { "stashed HEAD", "HEAD", "stash" });
      merger.setBase(stashHeadCommit);
      merger.setWorkingTreeIterator(new FileTreeIterator(repo));
      if (merger.merge(headCommit, stashCommit)) {
        DirCache dc = repo.lockDirCache();
        DirCacheCheckout dco = new DirCacheCheckout(repo, headTree, dc, merger.getResultTreeId());
        dco.setFailOnConflict(true);
        dco.checkout(); // Ignoring failed deletes....
        if (applyIndex) {
          ResolveMerger ixMerger = (ResolveMerger) strategy.newMerger(repo, true);
          ixMerger.setCommitNames(new String[] { "stashed HEAD", "HEAD", "stashed index" });
          ixMerger.setBase(stashHeadCommit);
          boolean ok = ixMerger.merge(headCommit, stashIndexCommit);
          if (ok) {
            resetIndex(revWalk.parseTree(ixMerger.getResultTreeId()));
          } else {
            throw new StashApplyFailureException(JGitText.get().stashApplyConflict);
          }
        }

        if (untrackedCommit != null) {
          ResolveMerger untrackedMerger = (ResolveMerger) strategy.newMerger(repo, true);
          untrackedMerger.setCommitNames(new String[] { "stashed HEAD", "HEAD", "untracked files" }); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
          untrackedMerger.setBase(stashHeadCommit);
          boolean ok = untrackedMerger.merge(stashHeadCommit, untrackedCommit);
          if (ok)
            try {
              RevTree untrackedTree = revWalk.parseTree(untrackedMerger.getResultTreeId());
              resetUntracked(untrackedTree);
            } catch (CheckoutConflictException e) {
              throw new StashApplyFailureException(JGitText.get().stashApplyConflict);
            }
          else
            throw new StashApplyFailureException(JGitText.get().stashApplyConflict);
        }
      } else {
        throw new StashApplyFailureException(JGitText.get().stashApplyConflict);
      }
      return stashId;

    } catch (JGitInternalException e) {
      throw e;
    } catch (IOException e) {
      throw new JGitInternalException(JGitText.get().stashApplyFailed, e);
    } finally {
      reader.release();
    }
  }
View Full Code Here

      walk = new TreeWalk(repo); // maybe NameConflictTreeWalk?
      walk.addTree(tree);
      walk.addTree(new FileTreeIterator(repo));
      walk.setRecursive(true);

      final ObjectReader reader = walk.getObjectReader();

      while (walk.next()) {
        final AbstractTreeIterator cIter = walk.getTree(0, AbstractTreeIterator.class);
        if (cIter == null)
          // Not in commit, don't create untracked
View Full Code Here

        dircache.unlock();
    }
  }

  private void checkout() throws NoWorkTreeException, IOException {
    ObjectReader r = db.getObjectDatabase().newReader();
    try {
      for (Map.Entry<String, DirCacheEntry> entry : toBeCheckedOut
          .entrySet()) {
        File f = new File(db.getWorkTree(), entry.getKey());
        if (entry.getValue() != null) {
          createDir(f.getParentFile());
          DirCacheCheckout.checkoutEntry(db, f, entry.getValue(), r);
        } else {
          if (!f.delete())
            failingPaths.put(entry.getKey(),
                MergeFailureReason.COULD_NOT_DELETE);
        }
        modifiedFiles.add(entry.getKey());
      }
    } finally {
      r.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.