List of usage examples for org.eclipse.jgit.patch FileHeader getOldPath
public String getOldPath()
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); } }