Example usage for org.eclipse.jgit.diff DiffEntry getScore

List of usage examples for org.eclipse.jgit.diff DiffEntry getScore

Introduction

In this page you can find the example usage for org.eclipse.jgit.diff DiffEntry getScore.

Prototype

public int getScore() 

Source Link

Document

Get similarity score

Usage

From source file:MyDiffFormatter.java

License:Eclipse Distribution License

private void formatHeader(ByteArrayOutputStream o, DiffEntry ent) throws IOException {
    final ChangeType type = ent.getChangeType();
    final String oldp = ent.getOldPath();
    final String newp = ent.getNewPath();
    final FileMode oldMode = ent.getOldMode();
    final FileMode newMode = ent.getNewMode();

    formatGitDiffFirstHeaderLine(o, type, oldp, newp);

    if ((type == MODIFY || type == COPY || type == RENAME) && !oldMode.equals(newMode)) {
        o.write(encodeASCII("old mode ")); //$NON-NLS-1$
        oldMode.copyTo(o);//from   w w  w  .  ja v a 2 s.c o  m
        o.write('\n');

        o.write(encodeASCII("new mode ")); //$NON-NLS-1$
        newMode.copyTo(o);
        o.write('\n');
    }

    switch (type) {
    case ADD:
        o.write(encodeASCII("new file mode ")); //$NON-NLS-1$
        newMode.copyTo(o);
        o.write('\n');
        break;

    case DELETE:
        o.write(encodeASCII("deleted file mode ")); //$NON-NLS-1$
        oldMode.copyTo(o);
        o.write('\n');
        break;

    case RENAME:
        o.write(encodeASCII("similarity index " + ent.getScore() + "%")); //$NON-NLS-1$ //$NON-NLS-2$
        o.write('\n');

        o.write(encode("rename from " + quotePath(oldp))); //$NON-NLS-1$
        o.write('\n');

        o.write(encode("rename to " + quotePath(newp))); //$NON-NLS-1$
        o.write('\n');
        break;

    case COPY:
        o.write(encodeASCII("similarity index " + ent.getScore() + "%")); //$NON-NLS-1$ //$NON-NLS-2$
        o.write('\n');

        o.write(encode("copy from " + quotePath(oldp))); //$NON-NLS-1$
        o.write('\n');

        o.write(encode("copy to " + quotePath(newp))); //$NON-NLS-1$
        o.write('\n');
        break;

    case MODIFY:
        if (0 < ent.getScore()) {
            o.write(encodeASCII("dissimilarity index " //$NON-NLS-1$
                    + (100 - ent.getScore()) + "%")); //$NON-NLS-1$
            o.write('\n');
        }
        break;
    }

    if (ent.getOldId() != null && !ent.getOldId().equals(ent.getNewId())) {
        formatIndexLine(o, ent);
    }
}

From source file:com.google.gitiles.CommitJsonData.java

License:Open Source License

private static List<Diff> toJsonData(DiffList dl) {
    if (dl.entries == null) {
        return ImmutableList.of();
    }/* w w  w. j  ava2  s  .c o m*/
    List<Diff> result = Lists.newArrayListWithCapacity(dl.entries.size());
    for (DiffEntry de : dl.entries) {
        Diff d = new Diff();
        d.type = de.getChangeType().name().toLowerCase();
        d.oldId = de.getOldId().name();
        d.oldMode = de.getOldMode().getBits();
        d.oldPath = de.getOldPath();
        d.newId = de.getNewId().name();
        d.newMode = de.getNewMode().getBits();
        d.newPath = de.getNewPath();

        switch (de.getChangeType()) {
        case COPY:
        case RENAME:
            d.score = de.getScore();
            break;
        default:
            break;
        }

        result.add(d);
    }
    return result;
}

From source file:com.madgag.agit.diff.LineContextDiffer.java

License:Open Source License

private void writeDiffHeader(OutputStream o, DiffEntry ent) throws IOException {
    String oldName = quotePath("a/" + ent.getOldPath());
    String newName = quotePath("b/" + ent.getNewPath());
    o.write(encode("diff --git " + oldName + " " + newName + "\n"));

    switch (ent.getChangeType()) {
    case ADD://from   w w w  .  j a v a 2s  . c o m
        o.write(encodeASCII("new file mode "));
        ent.getNewMode().copyTo(o);
        o.write('\n');
        break;

    case DELETE:
        o.write(encodeASCII("deleted file mode "));
        ent.getOldMode().copyTo(o);
        o.write('\n');
        break;

    case RENAME:
        o.write(encodeASCII("similarity index " + ent.getScore() + "%"));
        o.write('\n');

        o.write(encode("rename from " + quotePath(ent.getOldPath())));
        o.write('\n');

        o.write(encode("rename to " + quotePath(ent.getNewPath())));
        o.write('\n');
        break;

    case COPY:
        o.write(encodeASCII("similarity index " + ent.getScore() + "%"));
        o.write('\n');

        o.write(encode("copy from " + quotePath(ent.getOldPath())));
        o.write('\n');

        o.write(encode("copy to " + quotePath(ent.getNewPath())));
        o.write('\n');

        if (!ent.getOldMode().equals(ent.getNewMode())) {
            o.write(encodeASCII("new file mode "));
            ent.getNewMode().copyTo(o);
            o.write('\n');
        }
        break;
    case MODIFY:
        int score = ent.getScore();
        if (0 < score && score <= 100) {
            o.write(encodeASCII("dissimilarity index " + (100 - score) + "%"));
            o.write('\n');
        }
        break;
    }

    switch (ent.getChangeType()) {
    case RENAME:
    case MODIFY:
        if (!ent.getOldMode().equals(ent.getNewMode())) {
            o.write(encodeASCII("old mode "));
            ent.getOldMode().copyTo(o);
            o.write('\n');

            o.write(encodeASCII("new mode "));
            ent.getNewMode().copyTo(o);
            o.write('\n');
        }
    }

    o.write(encodeASCII("index " //
            + format(ent.getOldId()) //
            + ".." //
            + format(ent.getNewId())));
    if (ent.getOldMode().equals(ent.getNewMode())) {
        o.write(' ');
        ent.getNewMode().copyTo(o);
    }
    o.write('\n');
    o.write(encode("--- " + oldName + '\n'));
    o.write(encode("+++ " + newName + '\n'));
}

From source file:jbenchmarker.trace.git.model.Entry.java

License:Open Source License

public Entry(DiffEntry e) {
    type = e.getChangeType();
    newPath = e.getNewPath();
    oldPath = e.getOldPath();
    score = e.getScore();
}

From source file:org.eclipse.orion.server.git.servlets.Diff.java

License:Eclipse Distribution License

static void nameStatus(PrintWriter out, List<DiffEntry> files) {
    for (DiffEntry ent : files) {
        switch (ent.getChangeType()) {
        case ADD:
            out.println("A\t" + ent.getNewPath()); //$NON-NLS-1$
            break;
        case DELETE:
            out.println("D\t" + ent.getOldPath()); //$NON-NLS-1$
            break;
        case MODIFY:
            out.println("M\t" + ent.getNewPath()); //$NON-NLS-1$
            break;
        case COPY:
            out.format("C%1$03d\t%2$s\t%3$s", ent.getScore(), //$NON-NLS-1$
                    ent.getOldPath(), ent.getNewPath());
            out.println();//from  ww w .  ja va2s.  c  o m
            break;
        case RENAME:
            out.format("R%1$03d\t%2$s\t%3$s", ent.getScore(), //$NON-NLS-1$
                    ent.getOldPath(), ent.getNewPath());
            out.println();
            break;
        }
    }
}

From source file:org.kuali.student.git.tools.GitExtractor.java

License:Educational Community License

public void extractDifference(String targetTagName, String copyFromTagName)
        throws MissingObjectException, IncorrectObjectTypeException, IOException {

    RevTree target = extractTag(targetTagName);
    RevTree copyFrom = extractTag(copyFromTagName);

    DiffFormatter formatter = new DiffFormatter(System.out);

    formatter.setRepository(repository);

    formatter.setDetectRenames(true);/*  w w  w  . j a  v  a2  s.c o m*/

    formatter.setDiffAlgorithm(DiffAlgorithm.getAlgorithm(SupportedAlgorithm.MYERS));

    formatter.setDiffComparator(RawTextComparator.WS_IGNORE_ALL);

    List<DiffEntry> results = formatter.scan(target, copyFrom);

    for (DiffEntry entry : results) {

        if (entry.getChangeType().equals(ChangeType.COPY)) {

            AbbreviatedObjectId copyFromBlobId = entry.getOldId();

            // Cscore:md5:target-path:copy-from-path
            log.info(String.format("C%d:%s:%s:%s", entry.getScore(), "md5", entry.getNewPath(),
                    entry.getOldPath()));
        } else if (entry.getChangeType().equals(ChangeType.MODIFY)) {
            // Cscore:md5:target-path:copy-from-path
            log.info(String.format("M%d:%s:%s:%s", entry.getScore(), "md5", entry.getNewPath(),
                    entry.getOldPath()));
        }
    }

}

From source file:svnserver.repository.git.GitRepository.java

License:GNU General Public License

@NotNull
private Map<String, String> collectRename(@NotNull GitFile oldTree, @NotNull GitFile newTree)
        throws IOException {
    if (!renameDetection) {
        return Collections.emptyMap();
    }//from   w  w  w . j  a  v a 2 s .c  o  m
    final GitObject<ObjectId> oldTreeId = oldTree.getObjectId();
    final GitObject<ObjectId> newTreeId = newTree.getObjectId();
    if (oldTreeId == null || newTreeId == null || !Objects.equals(oldTreeId.getRepo(), newTreeId.getRepo())) {
        return Collections.emptyMap();
    }
    final TreeWalk tw = new TreeWalk(repository);
    tw.setRecursive(true);
    tw.addTree(oldTree.getObjectId().getObject());
    tw.addTree(newTree.getObjectId().getObject());

    final RenameDetector rd = new RenameDetector(repository);
    rd.addAll(DiffEntry.scan(tw));

    final Map<String, String> result = new HashMap<>();
    for (DiffEntry diff : rd.compute(tw.getObjectReader(), null)) {
        if (diff.getScore() >= rd.getRenameScore()) {
            result.put(StringHelper.normalize(diff.getNewPath()), StringHelper.normalize(diff.getOldPath()));
        }
    }
    return result;
}

From source file:util.DifferenceComputer.java

License:Apache License

public static List<DiffEntry> getChangedFilesBetweenTwoCommits(String repoPath, ObjectId ancestor,
        ObjectId commit) {//from ww w.j  a v a2s .c om
    List<DiffEntry> diffs = null;

    try {
        // The {tree} will return the underlying tree-id instead of the commit-id itself!
        // For a description of what the carets do see e.g. http://www.paulboxley.com/blog/2011/06/git-caret-and-tilde
        // This means we are selecting the parent of the parent of the parent of the parent of current HEAD and
        // take the tree-ish of it

        Git git = Git.open(new File(repoPath));
        Repository repository = git.getRepository();

        //ObjectId oldHead = repository.resolve(repository.findRef(branchToLookInto).getObjectId().getName()+"^^{tree}");//http://download.eclipse.org/jgit/site/4.2.0.201601211800-r/apidocs/org/eclipse/jgit/lib/Repository.html#resolve(java.lang.String)
        //ObjectId head = repository.resolve(repository.findRef(branchToLookInto).getObjectId().getName()+"^{tree}");

        ObjectId oldHead = repository.resolve(ancestor.getName() + "^{tree}");//http://download.eclipse.org/jgit/site/4.2.0.201601211800-r/apidocs/org/eclipse/jgit/lib/Repository.html#resolve(java.lang.String)
        ObjectId head = repository.resolve(commit.getName() + "^{tree}");

        System.out.println("Printing diff between tree: " + oldHead + "and" + head);

        // prepare the two iterators to compute the diff between

        ObjectReader reader = repository.newObjectReader();

        CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
        oldTreeIter.reset(reader, oldHead);
        CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
        newTreeIter.reset(reader, head);

        // finally get the list of changed files
        git = new Git(repository);

        diffs = git.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call();
        int changedFiles = 0;
        for (DiffEntry diff : diffs) {
            System.out.println("Entry: " + diff);
            System.out.println("getNewPath: " + diff.getNewPath());
            System.out.println("getScore: " + diff.getScore());
            System.out.println("getChangeType: " + diff.getChangeType());
            System.out.println("getNewMode: " + diff.getNewMode());
            System.out.println("getPath: " + diff.getPath(null));
            changedFiles++;
        }
        System.out.println("Changed Files: " + changedFiles);

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    System.out.println("Done");

    return diffs;
}