Example usage for org.eclipse.jgit.patch FileHeader getOldPath

List of usage examples for org.eclipse.jgit.patch FileHeader getOldPath

Introduction

In this page you can find the example usage for org.eclipse.jgit.patch FileHeader getOldPath.

Prototype

public String getOldPath() 

Source Link

Document

Get the old name associated with this file.

Usage

From source file:MySmartApply.java

License:Eclipse Distribution License

/**
 * Executes the {@code ApplyCommand} command with all the options and
 * parameters collected by the setter methods (e.g.
 * {@link #setPatch(InputStream)} of this class. Each instance of this class
 * should only be used for one invocation of the command. Don't call this
 * method twice on an instance.// ww w . ja  va 2s  .  co m
 *
 * @return an {@link ApplyResult} object representing the command result
 * @throws GitAPIException
 * @throws PatchFormatException
 * @throws PatchApplyException
 */
public ApplyResult call() throws GitAPIException, PatchFormatException, PatchApplyException {
    ApplyResult r = new ApplyResult();
    try {
        final Patch p = new Patch();
        try {
            p.parse(in);
        } finally {
            in.close();
        }
        if (!p.getErrors().isEmpty())
            throw new PatchFormatException(p.getErrors());
        for (FileHeader fh : p.getFiles()) {

            if (listener != null)
                listener.setFilename(
                        getFile((fh.getChangeType() != ChangeType.ADD) ? fh.getOldPath() : fh.getNewPath(),
                                false).getName());

            if (fh.getChangeType() == ChangeType.ADD || fh.getChangeType() == ChangeType.MODIFY
                    || fh.getChangeType() == ChangeType.COPY) {
                if (fh.getNewPath().contains(".lang.php") || fh.getNewPath().contains(".gitignore")
                        || fh.getNewPath().equals("includes/config.php")
                        || fh.getNewPath().contains("/images")) {
                    if (fh.getNewPath().contains(".lang.php") || fh.getNewPath().contains("/images"))
                        this.failed_files.add(getFile(
                                (fh.getChangeType() != ChangeType.ADD) ? fh.getOldPath() : fh.getNewPath(),
                                false));

                    if (listener != null)
                        listener.skipped();
                    continue;
                }
            }

            if (listener != null)
                listener.started();

            ChangeType type = fh.getChangeType();
            File f = null;
            switch (type) {
            case ADD:
                f = getFile(fh.getNewPath(), true);
                apply(f, fh);
                break;
            case MODIFY:
                f = getFile(fh.getOldPath(), false);
                apply(f, fh);
                break;
            case DELETE:
                f = getFile(fh.getOldPath(), false);
                if (!f.delete())
                    throw new PatchApplyException(MessageFormat.format(JGitText.get().cannotDeleteFile, f));
                break;
            case RENAME:
                f = getFile(fh.getOldPath(), false);
                File dest = getFile(fh.getNewPath(), false);
                if (!f.renameTo(dest))
                    throw new PatchApplyException(
                            MessageFormat.format(JGitText.get().renameFileFailed, f, dest));
                break;
            case COPY:
                f = getFile(fh.getOldPath(), false);
                byte[] bs = IO.readFully(f);
                FileOutputStream fos = new FileOutputStream(getFile(fh.getNewPath(), true));
                try {
                    fos.write(bs);
                } finally {
                    fos.close();
                }
            }

            // ... //

            if (!failed_files.contains(f) && type != ChangeType.DELETE)
                r.addUpdatedFile(f);

            // ... //
        }
    } catch (IOException e) {
        throw new PatchApplyException(MessageFormat.format(JGitText.get().patchApplyException, e.getMessage()),
                e);
    }

    return r;
}

From source file:com.github.rwhogg.git_vcr.Util.java

License:Open Source License

/**
 * getFilesChanged returns a list of all the files changed by this patch
 * @param patch The patch to check//from   ww w .j a  v  a2  s . c  o m
 * @return a list of pairs of files changed (first is the old path, second is the new path)
 */
public static List<ImmutablePair<String, String>> getFilesChanged(Patch patch) {
    List<ImmutablePair<String, String>> changeList = new LinkedList<>();
    List<? extends FileHeader> headers = patch.getFiles();
    for (FileHeader header : headers) {
        ImmutablePair<String, String> pair = new ImmutablePair<>(header.getOldPath(), header.getNewPath());
        changeList.add(pair);
    }
    return changeList;
}

From source file:com.google.gerrit.server.patch.PatchListEntry.java

License:Apache License

PatchListEntry(final FileHeader hdr, List<Edit> editList) {
    changeType = toChangeType(hdr);/*from  ww  w . j  a  va2s  . c  om*/
    patchType = toPatchType(hdr);

    switch (changeType) {
    case DELETED:
        oldName = null;
        newName = hdr.getOldPath();
        break;

    case ADDED:
    case MODIFIED:
        oldName = null;
        newName = hdr.getNewPath();
        break;

    case COPIED:
    case RENAMED:
        oldName = hdr.getOldPath();
        newName = hdr.getNewPath();
        break;

    default:
        throw new IllegalArgumentException("Unsupported type " + changeType);
    }

    header = compact(hdr);

    if (hdr instanceof CombinedFileHeader || hdr.getHunks().isEmpty() //
            || hdr.getOldMode() == FileMode.GITLINK || hdr.getNewMode() == FileMode.GITLINK) {
        edits = Collections.emptyList();
    } else {
        edits = Collections.unmodifiableList(editList);
    }

    int ins = 0;
    int del = 0;
    for (Edit e : editList) {
        del += e.getEndA() - e.getBeginA();
        ins += e.getEndB() - e.getBeginB();
    }
    insertions = ins;
    deletions = del;
}

From source file:org.eclipse.orion.server.git.patch.ApplyCommand.java

License:Open Source License

/**
 * Executes the {@code ApplyCommand} command with all the options and
 * parameters collected by the setter methods (e.g.
 * {@link #setPatch(InputStream)} of this class. Each instance of this class
 * should only be used for one invocation of the command. Don't call this
 * method twice on an instance./*from   w w  w  . j a  v  a 2  s  .c  om*/
 *
 * @return collection of formatting errors, if any
 */
public ApplyResult call() {
    ApplyResult r = new ApplyResult();
    try {
        final Patch p = new Patch();
        p.parse(in);
        if (!p.getErrors().isEmpty())
            return r.setFormatErrors(p.getErrors());
        for (FileHeader fh : p.getFiles()) {
            ChangeType type = fh.getChangeType();
            File f = null;
            switch (type) {
            case ADD:
                f = getFile(fh.getNewPath(), true);
                apply(f, fh, r);
                break;
            case MODIFY:
                f = getFile(fh.getOldPath(), false);
                apply(f, fh, r);
                break;
            case DELETE:
                f = getFile(fh.getOldPath(), false);
                if (!f.delete())
                    r.addApplyError(new ApplyError(fh, ChangeType.DELETE));
                break;
            case RENAME:
                f = getFile(fh.getOldPath(), false);
                File dest = getFile(fh.getNewPath(), false);
                if (!f.renameTo(dest))
                    r.addApplyError(new ApplyError(fh, ChangeType.RENAME));
                break;
            case COPY:
                f = getFile(fh.getOldPath(), false);
                byte[] bs = IO.readFully(f);
                FileWriter fw = new FileWriter(getFile(fh.getNewPath(), true));
                fw.write(new String(bs));
                fw.close();
            }
        }
    } catch (IOException e) {
        r.addApplyError(new ApplyError(e));
    } finally {
        IOUtilities.safeClose(in);
    }
    return r;
}

From source file:org.uberfire.java.nio.fs.jgit.util.commands.DiffBranches.java

License:Apache License

private FileDiff createFileDiff(final DiffEntry elem, final FileHeader header, final Edit edit) {
    try {/*from w  ww  .j av a  2s  .com*/
        final String changeType = header.getChangeType().toString();
        final int startA = edit.getBeginA();
        final int endA = edit.getEndA();
        final int startB = edit.getBeginB();
        final int endB = edit.getEndB();

        String pathA = header.getOldPath();
        String pathB = header.getNewPath();

        final List<String> linesA = getLines(elem.getOldId().toObjectId(), startA, endA);
        final List<String> linesB = getLines(elem.getNewId().toObjectId(), startB, endB);

        return new FileDiff(pathA, pathB, startA, endA, startB, endB, changeType, linesA, linesB);
    } catch (IOException e) {
        throw new GitException("A problem occurred when trying to obtain diffs between files", e);
    }
}