RevCommit getParent(int idx) { return sourceCommit.getParent(idx); }
private RevCommit getParentCommit(RevCommit srcCommit, RevWalk revWalk) throws MultipleParentsNotAllowedException, MissingObjectException, IOException { final RevCommit srcParent; if (mainlineParentNumber == null) { if (srcCommit.getParentCount() != 1) throw new MultipleParentsNotAllowedException( MessageFormat.format( JGitText.get().canOnlyCherryPickCommitsWithOneParent, srcCommit.name(), Integer.valueOf(srcCommit.getParentCount()))); srcParent = srcCommit.getParent(0); } else { if (mainlineParentNumber.intValue() > srcCommit.getParentCount()) throw new JGitInternalException(MessageFormat.format( JGitText.get().commitDoesNotHaveGivenParent, srcCommit, mainlineParentNumber)); srcParent = srcCommit .getParent(mainlineParentNumber.intValue() - 1); } revWalk.parseHeaders(srcParent); return srcParent; }
private List<RevCommit> getNewParents(RevCommit commitToPick) throws IOException { List<RevCommit> newParents = new ArrayList<>(); for (int p = 0; p < commitToPick.getParentCount(); p++) { String parentHash = commitToPick.getParent(p).getName(); if (!new File(rebaseState.getRewrittenDir(), parentHash).exists()) newParents.add(commitToPick.getParent(p)); else { String newParent = RebaseState.readFile( rebaseState.getRewrittenDir(), parentHash); if (newParent.length() == 0) newParents.add(walk.parseCommit(repo .resolve(Constants.HEAD))); else newParents.add(walk.parseCommit(ObjectId .fromString(newParent))); } } return newParents; }
private static RevCommitsPair resolveRevCommitsPair(Repository repo) { RevCommitsPair revCommitIteratorPair; try (RevWalk revWalk = new RevWalk(repo); Git git = new Git(repo)) { final Iterator<RevCommit> first; final Iterator<RevCommit> second; final ObjectId headId = repo.resolve(Constants.HEAD); final RevCommit headCommit = revWalk.parseCommit(headId); if (isMergeCommit(headCommit)) { final RevCommit firstParent = headCommit.getParent(0); final RevCommit secondParent = headCommit.getParent(1); first = git.log().add(firstParent).call().iterator(); second = git.log().add(secondParent).call().iterator(); } else { first = git.log().call().iterator(); second = Collections.emptyIterator(); } revCommitIteratorPair = new RevCommitsPair(new OmitMergeCommitsIterator(first), new OmitMergeCommitsIterator(second)); } catch (GitAPIException | IOException ignored) { revCommitIteratorPair = new RevCommitsPair(); } return revCommitIteratorPair; }
for (int i = 0; i < commit.getParentCount(); i++) { boolean parentRewritten = new File(rewrittenDir, commit .getParent(i).getName()).exists(); if (parentRewritten) { new File(rewrittenDir, commit.getName()).createNewFile();
private RebaseResult stop(RevCommit commitToPick, RebaseResult.Status status) throws IOException { PersonIdent author = commitToPick.getAuthorIdent(); String authorScript = toAuthorScript(author); rebaseState.createFile(AUTHOR_SCRIPT, authorScript); rebaseState.createFile(MESSAGE, commitToPick.getFullMessage()); ByteArrayOutputStream bos = new ByteArrayOutputStream(); try (DiffFormatter df = new DiffFormatter(bos)) { df.setRepository(repo); df.format(commitToPick.getParent(0), commitToPick); } rebaseState.createFile(PATCH, new String(bos.toByteArray(), UTF_8)); rebaseState.createFile(STOPPED_SHA, repo.newObjectReader() .abbreviate( commitToPick).name()); // Remove cherry pick state file created by CherryPickCommand, it's not // needed for rebase repo.writeCherryPickHead(null); return RebaseResult.result(status, commitToPick); }
rev = null; else rev = commit.getParent(pnum - 1); rev = null; else rev = commit.getParent(0); } else throw new IncorrectObjectTypeException(rev, rev = null; else rev = commit.getParent(0); } else throw new IncorrectObjectTypeException(rev, break; commit = commit.getParent(0); rw.parseHeaders(commit); rev = commit;
private void prepareMerger() throws IOException { merger = (ResolveMerger)strategy.newMerger(repo, true); merger.setBase(stash.getParent(0)); merger.setCommitNames(new String[] {"BASE", "Updated upstream", "Stashed changes"}); merger.setWorkingTreeIterator(iterateRoot(gfs)); }
RevCommit p = cmit.getParent(i); if (!p.has(added) && !p.has(RevFlag.UNINTERESTING) && !exclude(p)) {
private void showDiff(RevCommit c) throws IOException { final RevTree a = c.getParent(0).getTree(); final RevTree b = c.getTree(); if (showNameAndStatusOnly) Diff.nameStatus(outw, diffFmt.scan(a, b)); else { outw.flush(); diffFmt.format(a, b); diffFmt.flush(); } outw.println(); } }
@Test public void amendBranchHead_branchHeadShouldBecomeTheSpecifiedCommit() throws IOException { writeSomethingToCache(); AnyObjectId amendedCommit = commit(branchHead.getParent(0)); BranchUtils.amendCommit(TEST_BRANCH, amendedCommit, repo); assertEquals(amendedCommit, getHeadCommit(TEST_BRANCH, repo)); }
@Override public boolean include(RevWalk revWalk, RevCommit commit) throws IOException { if (commit.getParentCount() > 1) { ignoreCommits.add(commit.getParent(1)); } boolean include = true; if (ignoreCommits.contains(commit)) { include = false; ignoreCommits.remove(commit); } return include; }
for (int i = 1; i < commitToPick.getParentCount(); i++) otherParentsUnchanged &= newParents.get(i).equals( commitToPick.getParent(i));
private boolean isFoundInPath(RevCommit commit) throws IOException { if (commit.getParentCount() > 0) { for (DiffEntry diff : getDiffs(commit, commit.getParent(0))) { if (diff.getNewPath().startsWith(relativizedPath)) { return true; } } } return false; }
Integer.valueOf(srcCommit.getParentCount()))); RevCommit srcParent = srcCommit.getParent(0); revWalk.parseHeaders(srcParent);
@NotNull private static String loadRepositoryId(@NotNull Repository repository, @NotNull Ref ref) throws IOException { ObjectId oid = ref.getObjectId(); final RevWalk revWalk = new RevWalk(repository); while (true) { final RevCommit revCommit = revWalk.parseCommit(oid); if (revCommit.getParentCount() == 0) { return LayoutHelper.loadRepositoryId(repository.newObjectReader(), oid); } oid = revCommit.getParent(0); } }
private static ObjectId[] trees(final RevCommit commit) { final ObjectId[] r = new ObjectId[commit.getParentCount() + 1]; for (int i = 0; i < r.length - 1; i++) r[i] = commit.getParent(i).getTree().getId(); r[r.length - 1] = commit.getTree().getId(); return r; }
private List<DiffEntry> diffsForTheCommit(Repository repo, RevCommit commit) throws IOException { AnyObjectId currentCommit = repo.resolve(commit.getName()); AnyObjectId parentCommit = commit.getParentCount() > 0 ? repo.resolve(commit.getParent(0).getName()) : null; return this.getDiffBetweenCommits(repo, parentCommit, currentCommit); }
@Override protected void show(final RevCommit c) throws Exception { if (c.has(RevFlag.UNINTERESTING)) outw.print('-'); c.getId().copyTo(outbuffer, outw); if (parents) for (int i = 0; i < c.getParentCount(); i++) { outw.print(' '); c.getParent(i).getId().copyTo(outbuffer, outw); } outw.println(); }