Examples of BlameGenerator


Examples of org.eclipse.jgit.blame.BlameGenerator

   *
   * @return list of lines
   */
  public BlameResult call() throws JGitInternalException {
    checkCallable();
    BlameGenerator gen = new BlameGenerator(repo, path);
    try {
      if (diffAlgorithm != null)
        gen.setDiffAlgorithm(diffAlgorithm);
      if (textComparator != null)
        gen.setTextComparator(textComparator);
      if (followFileRenames != null)
        gen.setFollowFileRenames(followFileRenames.booleanValue());

      if (reverseEndCommits != null)
        gen.reverse(startCommit, reverseEndCommits);
      else if (startCommit != null)
        gen.push(null, startCommit);
      else {
        gen.push(null, repo.resolve(Constants.HEAD));
        if (!repo.isBare()) {
          DirCache dc = repo.readDirCache();
          int entry = dc.findEntry(path);
          if (0 <= entry)
            gen.push(null, dc.getEntry(entry).getObjectId());

          File inTree = new File(repo.getWorkTree(), path);
          if (inTree.isFile())
            gen.push(null, new RawText(inTree));
        }
      }
      return gen.computeBlameResult();
    } catch (IOException e) {
      throw new JGitInternalException(e.getMessage(), e);
    } finally {
      gen.release();
    }
  }
View Full Code Here

Examples of org.eclipse.jgit.blame.BlameGenerator

    if (showRawTimestamp)
      dateFmt = new SimpleDateFormat("ZZZZ"); //$NON-NLS-1$
    else
      dateFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ZZZZ"); //$NON-NLS-1$

    BlameGenerator generator = new BlameGenerator(db, file);
    reader = db.newObjectReader();
    try {
      generator.setTextComparator(comparator);

      if (!reverseRange.isEmpty()) {
        RevCommit rangeStart = null;
        List<RevCommit> rangeEnd = new ArrayList<RevCommit>(2);
        for (RevCommit c : reverseRange) {
          if (c.has(RevFlag.UNINTERESTING))
            rangeStart = c;
          else
            rangeEnd.add(c);
        }
        generator.reverse(rangeStart, rangeEnd);
      } else if (revision != null) {
        generator.push(null, db.resolve(revision + "^{commit}")); //$NON-NLS-1$
      } else {
        generator.push(null, db.resolve(Constants.HEAD));
        if (!db.isBare()) {
          DirCache dc = db.readDirCache();
          int entry = dc.findEntry(file);
          if (0 <= entry)
            generator.push(null, dc.getEntry(entry).getObjectId());

          File inTree = new File(db.getWorkTree(), file);
          if (inTree.isFile())
            generator.push(null, new RawText(inTree));
        }
      }

      blame = BlameResult.create(generator);
      begin = 0;
      end = blame.getResultContents().size();
      if (rangeString != null)
        parseLineRangeOption();
      blame.computeRange(begin, end);

      int authorWidth = 8;
      int dateWidth = 8;
      int pathWidth = 1;
      int maxSourceLine = 1;
      for (int line = begin; line < end; line++) {
        authorWidth = Math.max(authorWidth, author(line).length());
        dateWidth = Math.max(dateWidth, date(line).length());
        pathWidth = Math.max(pathWidth, path(line).length());
        maxSourceLine = Math.max(maxSourceLine, blame.getSourceLine(line));
      }

      String pathFmt = MessageFormat.format(" %{0}s", valueOf(pathWidth)); //$NON-NLS-1$
      String numFmt = MessageFormat.format(" %{0}d", //$NON-NLS-1$
          valueOf(1 + (int) Math.log10(maxSourceLine + 1)));
      String lineFmt = MessageFormat.format(" %{0}d) ", //$NON-NLS-1$
          valueOf(1 + (int) Math.log10(end + 1)));
      String authorFmt = MessageFormat.format(" (%-{0}s %{1}s", //$NON-NLS-1$
          valueOf(authorWidth), valueOf(dateWidth));

      for (int line = begin; line < end; line++) {
        outw.print(abbreviate(blame.getSourceCommit(line)));
        if (showSourcePath)
          outw.format(pathFmt, path(line));
        if (showSourceLine)
          outw.format(numFmt, valueOf(blame.getSourceLine(line) + 1));
        if (!noAuthor)
          outw.format(authorFmt, author(line), date(line));
        outw.format(lineFmt, valueOf(line + 1));
        outw.flush();
        blame.getResultContents().writeLine(outs, line);
        outs.flush();
        outw.print('\n');
      }
    } finally {
      generator.release();
      reader.release();
    }
  }
View Full Code Here

Examples of org.eclipse.jgit.blame.BlameGenerator

    String[] content2 = new String[] { "third", "first", "second" };
    writeTrashFile("file.txt", join(content2));
    git.add().addFilepattern("file.txt").call();
    RevCommit c2 = git.commit().setMessage("create file").call();

    BlameGenerator generator = new BlameGenerator(db, "file.txt");
    try {
      generator.push(null, db.resolve(Constants.HEAD));
      assertEquals(3, generator.getResultContents().size());

      assertTrue(generator.next());
      assertEquals(c2, generator.getSourceCommit());
      assertEquals(1, generator.getRegionLength());
      assertEquals(0, generator.getResultStart());
      assertEquals(1, generator.getResultEnd());
      assertEquals(0, generator.getSourceStart());
      assertEquals(1, generator.getSourceEnd());
      assertEquals("file.txt", generator.getSourcePath());

      assertTrue(generator.next());
      assertEquals(c1, generator.getSourceCommit());
      assertEquals(2, generator.getRegionLength());
      assertEquals(1, generator.getResultStart());
      assertEquals(3, generator.getResultEnd());
      assertEquals(0, generator.getSourceStart());
      assertEquals(2, generator.getSourceEnd());
      assertEquals("file.txt", generator.getSourcePath());

      assertFalse(generator.next());
    } finally {
      generator.release();
    }
  }
View Full Code Here

Examples of org.eclipse.jgit.blame.BlameGenerator

    String[] content2 = new String[] { "third", "first", "second" };
    writeTrashFile(FILENAME_2, join(content2));
    git.add().addFilepattern(FILENAME_2).call();
    RevCommit c2 = git.commit().setMessage("change file2").call();

    BlameGenerator generator = new BlameGenerator(db, FILENAME_2);
    try {
      generator.push(null, db.resolve(Constants.HEAD));
      assertEquals(3, generator.getResultContents().size());

      assertTrue(generator.next());
      assertEquals(c2, generator.getSourceCommit());
      assertEquals(1, generator.getRegionLength());
      assertEquals(0, generator.getResultStart());
      assertEquals(1, generator.getResultEnd());
      assertEquals(0, generator.getSourceStart());
      assertEquals(1, generator.getSourceEnd());
      assertEquals(FILENAME_2, generator.getSourcePath());

      assertTrue(generator.next());
      assertEquals(c1, generator.getSourceCommit());
      assertEquals(2, generator.getRegionLength());
      assertEquals(1, generator.getResultStart());
      assertEquals(3, generator.getResultEnd());
      assertEquals(0, generator.getSourceStart());
      assertEquals(2, generator.getSourceEnd());
      assertEquals(FILENAME_1, generator.getSourcePath());

      assertFalse(generator.next());
    } finally {
      generator.release();
    }

    // and test again with other BlameGenerator API:
    generator = new BlameGenerator(db, FILENAME_2);
    try {
      generator.push(null, db.resolve(Constants.HEAD));
      BlameResult result = generator.computeBlameResult();

      assertEquals(3, result.getResultContents().size());

      assertEquals(c2, result.getSourceCommit(0));
      assertEquals(FILENAME_2, result.getSourcePath(0));

      assertEquals(c1, result.getSourceCommit(1));
      assertEquals(FILENAME_1, result.getSourcePath(1));

      assertEquals(c1, result.getSourceCommit(2));
      assertEquals(FILENAME_1, result.getSourcePath(2));

    } finally {
      generator.release();
    }
  }
View Full Code Here

Examples of org.eclipse.jgit.blame.BlameGenerator

    writeTrashFile("file.txt", join(content1));
    git.add().addFilepattern("file.txt").call();
    RevCommit c3 = git.commit().setMessage("create file").call();

    BlameGenerator generator = new BlameGenerator(db, "file.txt");
    try {
      generator.push(null, db.resolve(Constants.HEAD));
      assertEquals(3, generator.getResultContents().size());

      assertTrue(generator.next());
      assertEquals(c3, generator.getSourceCommit());
      assertEquals(0, generator.getResultStart());
      assertEquals(3, generator.getResultEnd());

      assertFalse(generator.next());
    } finally {
      generator.release();
    }
  }
View Full Code Here

Examples of org.eclipse.jgit.blame.BlameGenerator

    if (showRawTimestamp)
      dateFmt = new SimpleDateFormat("ZZZZ"); //$NON-NLS-1$
    else
      dateFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ZZZZ"); //$NON-NLS-1$

    BlameGenerator generator = new BlameGenerator(db, file);
    RevFlag scanned = generator.newFlag("SCANNED"); //$NON-NLS-1$
    reader = db.newObjectReader();
    try {
      generator.setTextComparator(comparator);

      if (!reverseRange.isEmpty()) {
        RevCommit rangeStart = null;
        List<RevCommit> rangeEnd = new ArrayList<RevCommit>(2);
        for (RevCommit c : reverseRange) {
          if (c.has(RevFlag.UNINTERESTING))
            rangeStart = c;
          else
            rangeEnd.add(c);
        }
        generator.reverse(rangeStart, rangeEnd);
      } else if (revision != null) {
        generator.push(null, db.resolve(revision + "^{commit}")); //$NON-NLS-1$
      } else {
        generator.push(null, db.resolve(Constants.HEAD));
        if (!db.isBare()) {
          DirCache dc = db.readDirCache();
          int entry = dc.findEntry(file);
          if (0 <= entry)
            generator.push(null, dc.getEntry(entry).getObjectId());

          File inTree = new File(db.getWorkTree(), file);
          if (db.getFS().isFile(inTree))
            generator.push(null, new RawText(inTree));
        }
      }

      blame = BlameResult.create(generator);
      begin = 0;
      end = blame.getResultContents().size();
      if (rangeString != null)
        parseLineRangeOption();
      blame.computeRange(begin, end);

      int authorWidth = 8;
      int dateWidth = 8;
      int pathWidth = 1;
      int maxSourceLine = 1;
      for (int line = begin; line < end; line++) {
        RevCommit c = blame.getSourceCommit(line);
        if (c != null && !c.has(scanned)) {
          c.add(scanned);
          if (autoAbbrev)
            abbrev = Math.max(abbrev, uniqueAbbrevLen(c));
          authorWidth = Math.max(authorWidth, author(line).length());
          dateWidth = Math.max(dateWidth, date(line).length());
          pathWidth = Math.max(pathWidth, path(line).length());
        }
        while (line + 1 < end && blame.getSourceCommit(line + 1) == c)
          line++;
        maxSourceLine = Math.max(maxSourceLine, blame.getSourceLine(line));
      }

      String pathFmt = MessageFormat.format(" %{0}s", valueOf(pathWidth)); //$NON-NLS-1$
      String numFmt = MessageFormat.format(" %{0}d", //$NON-NLS-1$
          valueOf(1 + (int) Math.log10(maxSourceLine + 1)));
      String lineFmt = MessageFormat.format(" %{0}d) ", //$NON-NLS-1$
          valueOf(1 + (int) Math.log10(end + 1)));
      String authorFmt = MessageFormat.format(" (%-{0}s %{1}s", //$NON-NLS-1$
          valueOf(authorWidth), valueOf(dateWidth));

      for (int line = begin; line < end;) {
        RevCommit c = blame.getSourceCommit(line);
        String commit = abbreviate(c);
        String author = null;
        String date = null;
        if (!noAuthor) {
          author = author(line);
          date = date(line);
        }
        do {
          outw.print(commit);
          if (showSourcePath)
            outw.format(pathFmt, path(line));
          if (showSourceLine)
            outw.format(numFmt, valueOf(blame.getSourceLine(line) + 1));
          if (!noAuthor)
            outw.format(authorFmt, author, date);
          outw.format(lineFmt, valueOf(line + 1));
          outw.flush();
          blame.getResultContents().writeLine(outs, line);
          outs.flush();
          outw.print('\n');
        } while (++line < end && blame.getSourceCommit(line) == c);
      }
    } finally {
      generator.release();
      reader.release();
    }
  }
View Full Code Here

Examples of org.eclipse.jgit.blame.BlameGenerator

   *
   * @return list of lines
   */
  public BlameResult call() throws GitAPIException {
    checkCallable();
    BlameGenerator gen = new BlameGenerator(repo, path);
    try {
      if (diffAlgorithm != null)
        gen.setDiffAlgorithm(diffAlgorithm);
      if (textComparator != null)
        gen.setTextComparator(textComparator);
      if (followFileRenames != null)
        gen.setFollowFileRenames(followFileRenames.booleanValue());

      if (reverseEndCommits != null)
        gen.reverse(startCommit, reverseEndCommits);
      else if (startCommit != null)
        gen.push(null, startCommit);
      else {
        gen.push(null, repo.resolve(Constants.HEAD));
        if (!repo.isBare()) {
          DirCache dc = repo.readDirCache();
          int entry = dc.findEntry(path);
          if (0 <= entry)
            gen.push(null, dc.getEntry(entry).getObjectId());

          File inTree = new File(repo.getWorkTree(), path);
          if (repo.getFS().isFile(inTree)) {
            RawText rawText = getRawText(inTree);
            gen.push(null, rawText);
          }
        }
      }
      return gen.computeBlameResult();
    } catch (IOException e) {
      throw new JGitInternalException(e.getMessage(), e);
    } finally {
      gen.release();
    }
  }
View Full Code Here

Examples of org.eclipse.jgit.blame.BlameGenerator

   *
   * @return list of lines
   */
  public BlameResult call() throws GitAPIException {
    checkCallable();
    BlameGenerator gen = new BlameGenerator(repo, path);
    try {
      if (diffAlgorithm != null)
        gen.setDiffAlgorithm(diffAlgorithm);
      if (textComparator != null)
        gen.setTextComparator(textComparator);
      if (followFileRenames != null)
        gen.setFollowFileRenames(followFileRenames.booleanValue());

      if (reverseEndCommits != null)
        gen.reverse(startCommit, reverseEndCommits);
      else if (startCommit != null)
        gen.push(null, startCommit);
      else {
        gen.push(null, repo.resolve(Constants.HEAD));
        if (!repo.isBare()) {
          DirCache dc = repo.readDirCache();
          int entry = dc.findEntry(path);
          if (0 <= entry)
            gen.push(null, dc.getEntry(entry).getObjectId());

          File inTree = new File(repo.getWorkTree(), path);
          if (inTree.isFile())
            gen.push(null, new RawText(inTree));
        }
      }
      return gen.computeBlameResult();
    } catch (IOException e) {
      throw new JGitInternalException(e.getMessage(), e);
    } finally {
      gen.release();
    }
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.