Java Code Examples for org.eclipse.jgit.revwalk.RevCommit#getFullMessage()

The following examples show how to use org.eclipse.jgit.revwalk.RevCommit#getFullMessage() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: GitTool.java    From yacy_grid_mcp with GNU Lesser General Public License v2.1 7 votes vote down vote up
public GitTool() {
    File gitWorkDir = new File(".");
    try {
        Git git = Git.open(gitWorkDir);
        Iterable<RevCommit> commits = git.log().all().call();
        Repository repo = git.getRepository();
        branch = repo.getBranch();
        RevCommit latestCommit = commits.iterator().next();
        name = latestCommit.getName();
        message = latestCommit.getFullMessage();
    } catch (Throwable e) {
        name = "";
        message = "";
        branch = "";
    }
}
 
Example 2
Source File: GitUtils.java    From onedev with MIT License 6 votes vote down vote up
@Nullable
public static String getDetailMessage(RevCommit commit) {
	int start = 0;
	String fullMessage = commit.getFullMessage();
	while (true) {
		int index = fullMessage.indexOf('\n', start);
		if (index == -1)
			return null;
		start = index+1;
		int nextIndex = fullMessage.indexOf('\n', start);
		if (nextIndex == -1)
			return null;
		start = nextIndex+1;
		if (fullMessage.substring(index, nextIndex).trim().length() == 0) {
			String detailMessage = fullMessage.substring(start).trim();
			return detailMessage.length()!=0?detailMessage:null;
		}
	}
}
 
Example 3
Source File: SvnToGitMapper.java    From naturalize with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
public BiMap<Integer, String> mapSvnToGit() throws IOException,
		NoWorkTreeException, NoHeadException, GitAPIException {
	final BiMap<Integer, String> mappings = HashBiMap.create();
	final Git repository = GitCommitUtils
			.getGitRepository(repositoryDirectory);

	for (final RevCommit commit : GitCommitUtils
			.getAllCommitsTopological(repository)) {
		final String message = commit.getFullMessage();
		if (!message.contains("git-svn-id")) {
			continue;
		}
		final Matcher matcher = svnIdMatcher.matcher(message);
		matcher.find();
		mappings.put(Integer.parseInt(matcher.group(1)), commit.name());
	}

	return mappings;
}
 
Example 4
Source File: EmailSender.java    From verigreen with Apache License 2.0 6 votes vote down vote up
public String getCommitMessage(String commitId){
  	String commitMessage = null;
try {
	FileRepositoryBuilder builder = new FileRepositoryBuilder();
	String repoPath = VerigreenNeededLogic.properties.getProperty("git.repositoryLocation");
	Repository repo = builder.setGitDir(new File(repoPath)).setMustExist(true).build();
	Git git = new Git(repo);
	Iterable<RevCommit> log = git.log().call();
	Iterator<RevCommit> iterator = log.iterator();
	while(commitMessage == null && iterator.hasNext()){
		RevCommit rev = iterator.next();
		String commit = rev.getName().substring(0,7);
		if(commit.equals(commitId)){
    	  commitMessage = rev.getFullMessage();
		}
	}
} catch(Exception e){
	e.printStackTrace();
}
return commitMessage;
  }
 
Example 5
Source File: RewordActionHandler.java    From WebIDE-Backend with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
@Override
public RebaseResponse extractMessage(Repository repository) throws IOException {
    List<RebaseTodoLine> rebaseTodoLines = repository.readRebaseTodo(getRebasePath(repository, DONE), false);
    // the last rebase_todo_line
    RebaseTodoLine line = rebaseTodoLines.get(rebaseTodoLines.size() - 1);

    try (RevWalk walk = new RevWalk(repository)) {
        ObjectReader or = repository.newObjectReader();
        RevCommit commitToPick = walk.parseCommit(or.resolve(line.getCommit()).iterator().next());

        String oldMessage = commitToPick.getFullMessage();

        RebaseResponse response = new RebaseResponse(false, RebaseResponse.Status.INTERACTIVE_EDIT);
        response.setMessage(oldMessage);

        return response;
    }
}
 
Example 6
Source File: GitCommit.java    From app-runner with MIT License 5 votes vote down vote up
public static GitCommit fromHEAD(Git git) throws Exception {
    ObjectId head = git.getRepository().resolve("HEAD");
    if (head != null) {
        RevCommit mostRecentCommit;
        try (RevWalk walk = new RevWalk(git.getRepository())) {
            mostRecentCommit = walk.parseCommit(head);
        }
        Date commitDate = new Date(1000L * mostRecentCommit.getCommitTime());
        String id = mostRecentCommit.getId().name();
        PersonIdent author = mostRecentCommit.getAuthorIdent();
        return new GitCommit(id, commitDate, author.getName(), mostRecentCommit.getFullMessage());
    } else {
        return null;
    }
}
 
Example 7
Source File: GitHistoryParser.java    From proctor with Apache License 2.0 5 votes vote down vote up
static Revision createRevisionFromCommit(final RevCommit commit) {
    return new Revision(
            commit.getName(),
            determineAuthorId(commit),
            new Date((long) commit.getCommitTime() * 1000 /* convert seconds to milliseconds */),
            commit.getFullMessage()
    );
}
 
Example 8
Source File: ConfigRepository.java    From gocd with Apache License 2.0 5 votes vote down vote up
public RevCommit getRevCommitForMd5(String md5) throws GitAPIException {
    Assert.notNull(md5, "md5 is required");

    final String expectedPart = GoConfigRevision.Fragment.md5.represent(GoConfigRevision.esc(md5));
    for (RevCommit revision : revisions()) {
        String message = revision.getFullMessage();
        if (message.endsWith(expectedPart)) {
            return revision;
        }
    }
    throw new IllegalArgumentException(String.format("There is no config version corresponding to md5: '%s'", md5));
}
 
Example 9
Source File: GitRepo.java    From git-changelog-lib with Apache License 2.0 5 votes vote down vote up
private GitCommit toGitCommit(final RevCommit revCommit) {
  final Boolean merge = revCommit.getParentCount() > 1;
  return new GitCommit( //
      revCommit.getAuthorIdent().getName(), //
      revCommit.getAuthorIdent().getEmailAddress(), //
      new Date(revCommit.getCommitTime() * 1000L), //
      revCommit.getFullMessage(), //
      revCommit.getId().getName(), //
      merge);
}
 
Example 10
Source File: NotesBuilder.java    From contribution with GNU Lesser General Public License v2.1 5 votes vote down vote up
/**
 * Returns a list of commits which are associated with the current issue.
 *
 * @param commits commits.
 * @param issueNo issue number.
 * @return a list of commits which are associated with the current issue.
 */
private static Set<RevCommit> getCommitsForIssue(Set<RevCommit> commits, int issueNo) {
    final Set<RevCommit> currentIssueCommits = new HashSet<>();
    for (RevCommit commit : commits) {
        final String commitMessage = commit.getFullMessage();
        if (isIssueOrPull(commitMessage)) {
            final int currentIssueNo = getIssueNumberFrom(commitMessage);
            if (issueNo == currentIssueNo) {
                currentIssueCommits.add(commit);
            }
        }
    }
    return currentIssueCommits;
}
 
Example 11
Source File: NotesBuilder.java    From contribution with GNU Lesser General Public License v2.1 5 votes vote down vote up
/**
 * Returns a set of ignored commits.
 * Ignored commits are 'revert' commits and commits which were reverted by the 'revert' commits
 * in current release.
 *
 * @param commitsForRelease commits for release.
 * @return a set of ignored commits.
 */
private static Set<RevCommit> getIgnoredCommits(Set<RevCommit> commitsForRelease) {
    final Set<RevCommit> ignoredCommits = new HashSet<>();
    for (RevCommit commit : commitsForRelease) {
        final String commitMessage = commit.getFullMessage();
        if (isRevertCommit(commitMessage)) {
            final int lastSpaceIndex = commitMessage.lastIndexOf(' ');
            final int lastPeriodIndex = commitMessage.lastIndexOf('.');
            final String revertedCommitReference;
            if (lastSpaceIndex > lastPeriodIndex) {
                // smth is wrong with commit message, revert commit was changed manually
                revertedCommitReference = "nonexistingsha";
            }
            else {
                revertedCommitReference =
                        commitMessage.substring(lastSpaceIndex + 1, lastPeriodIndex);
            }

            final Optional<RevCommit> revertedCommit = commitsForRelease.stream()
                .filter(revCommit -> revertedCommitReference.equals(revCommit.getName()))
                .findFirst();

            if (revertedCommit.isPresent()) {
                ignoredCommits.add(commit);
                ignoredCommits.add(revertedCommit.get());
            }
        }
        else if (isIgnoredCommit(commitMessage)) {
            ignoredCommits.add(commit);
        }
    }
    return ignoredCommits;
}
 
Example 12
Source File: UIGit.java    From hop with Apache License 2.0 5 votes vote down vote up
@Override
public String getCommitMessage( String commitId ) {
  if ( commitId.equals( IVCS.WORKINGTREE ) ) {
    try {
      String merge_msg = git.getRepository().readMergeCommitMsg();
      return merge_msg == null ? "" : merge_msg;
    } catch ( Exception e ) {
      return e.getMessage();
    }
  } else {
    RevCommit commit = resolve( commitId );
    return commit.getFullMessage();
  }
}
 
Example 13
Source File: GitRepository.java    From APDE with GNU General Public License v2.0 5 votes vote down vote up
public static String ellipsizeCommitMessage(RevCommit commit, int truncateAt) {
	String shortMessage = commit.getShortMessage();
	
	return truncateAt > 0 ?
			(shortMessage.length() > truncateAt
					? shortMessage.substring(0, Math.min(truncateAt, shortMessage.length())) + "…"
					: shortMessage)
			: commit.getFullMessage();
}
 
Example 14
Source File: SimpleCommit.java    From spring-cloud-release-tools with Apache License 2.0 5 votes vote down vote up
SimpleCommit(RevCommit revCommit) {
	this(revCommit.abbreviate(8).name(), revCommit.name(),
			revCommit.getShortMessage(), revCommit.getFullMessage(),
			revCommit.getAuthorIdent().getName(),
			revCommit.getAuthorIdent().getEmailAddress(),
			revCommit.getCommitterIdent().getName(),
			revCommit.getCommitterIdent().getEmailAddress(),
			revCommit.getParentCount() > 1);
}
 
Example 15
Source File: Utils.java    From data7 with Apache License 2.0 5 votes vote down vote up
/**
 * Function to generate a commit Object from a revcommit object
 * @param git git repository
 * @param commit to generate the commit object from
 * @param filter whether of not files should be filtered
 * @return a commit object
 * @see Commit
 */
public static Commit generateCommitOfInterest(GitActions git, RevCommit commit,boolean filter) {
    try {
        String hash = commit.getName();
        String commitMessage = commit.getFullMessage();
        int timestamp = commit.getCommitTime();
        List<String> modifiedFiles = git.getListOfModifiedFile(commit.getName(), FILE_EXTENSION);
        List<FileFix> fixes = new ArrayList<>();
        for (String modifiedFile : modifiedFiles) {
            if (!filter || !modifiedFile.toLowerCase().contains("test")) {
                String newName = modifiedFile;
                GitActions.NamedCommit previousCommit = git.previousCommitImpactingAFile(modifiedFile, hash);
                String oldname = previousCommit.getFilePath();
                String oldHash = previousCommit.getRevCommit().getName();
                String oldContent = git.retrievingFileFromSpecificCommit(oldHash, oldname);
                String newContent = git.retrievingFileFromSpecificCommit(hash, newName);
                FileInterest old = new FileInterest(oldContent, oldname);
                FileInterest newer = new FileInterest(newContent, newName);
                fixes.add(new FileFix(old, newer, oldHash, git.getTimeCommit(oldHash)));
            }
        }
        return new Commit(hash, commitMessage, timestamp, fixes);
    } catch (IOException e) {
        System.err.println(e.getMessage());
        return null;
    }
}
 
Example 16
Source File: SimpleBugIntroducerFinder.java    From SZZUnleashed with MIT License 5 votes vote down vote up
/** Check if a commit is a partial fix. */
private boolean isPartialFix(String commit) throws IOException, GitAPIException {
  RevCommit rCommit = this.repo.parseCommit(this.repo.resolve(commit));
  String message = rCommit.getFullMessage();

  Matcher fixMatch = this.partialFixPattern.matcher(commit);

  return fixMatch.find();
}
 
Example 17
Source File: JGitAPIImpl.java    From git-client-plugin with MIT License 4 votes vote down vote up
/**
 * Formats a commit into the raw format.
 *
 * @param commit
 *      Commit to format.
 * @param parent
 *      Optional parent commit to produce the diff against. This only matters
 *      for merge commits, and git-log/git-whatchanged/etc behaves differently with respect to this.
 */
@SuppressFBWarnings(value = "VA_FORMAT_STRING_USES_NEWLINE",
        justification = "Windows git implementation requires specific line termination")
void format(RevCommit commit, RevCommit parent, PrintWriter pw, Boolean useRawOutput) throws IOException {
    if (parent!=null)
        pw.printf("commit %s (from %s)\n", commit.name(), parent.name());
    else
        pw.printf("commit %s\n", commit.name());

    pw.printf("tree %s\n", commit.getTree().name());
    for (RevCommit p : commit.getParents())
        pw.printf("parent %s\n",p.name());
    FastDateFormat iso = FastDateFormat.getInstance(ISO_8601);
    PersonIdent a = commit.getAuthorIdent();
    pw.printf("author %s <%s> %s\n", a.getName(), a.getEmailAddress(), iso.format(a.getWhen()));
    PersonIdent c = commit.getCommitterIdent();
    pw.printf("committer %s <%s> %s\n", c.getName(), c.getEmailAddress(), iso.format(c.getWhen()));

    // indent commit messages by 4 chars
    String msg = commit.getFullMessage();
    if (msg.endsWith("\n")) msg=msg.substring(0,msg.length()-1);
    msg = msg.replace("\n","\n    ");
    msg="\n    "+msg+"\n";

    pw.println(msg);

    // see man git-diff-tree for the format
    try (Repository repo = getRepository();
         ObjectReader or = repo.newObjectReader();
         TreeWalk tw = new TreeWalk(or)) {
    if (parent != null) {
        /* Caller provided a parent commit, use it */
        tw.reset(parent.getTree(), commit.getTree());
    } else {
        if (commit.getParentCount() > 0) {
            /* Caller failed to provide parent, but a parent
             * is available, so use the parent in the walk
             */
            tw.reset(commit.getParent(0).getTree(), commit.getTree());
        } else {
            /* First commit in repo has 0 parent count, but
             * the TreeWalk requires exactly two nodes for its
             * walk.  Use the same node twice to satisfy
             * TreeWalk. See JENKINS-22343 for details.
             */
            tw.reset(commit.getTree(), commit.getTree());
        }
    }
    tw.setRecursive(true);
    tw.setFilter(TreeFilter.ANY_DIFF);

    final RenameDetector rd = new RenameDetector(repo);

    rd.reset();
    rd.addAll(DiffEntry.scan(tw));
    List<DiffEntry> diffs = rd.compute(or, null);
    if (useRawOutput) {
     for (DiffEntry diff : diffs) {
         pw.printf(":%06o %06o %s %s %s\t%s",
                 diff.getOldMode().getBits(),
                 diff.getNewMode().getBits(),
                 diff.getOldId().name(),
                 diff.getNewId().name(),
                 statusOf(diff),
                 diff.getChangeType()==ChangeType.ADD ? diff.getNewPath() : diff.getOldPath());

         if (hasNewPath(diff)) {
             pw.printf(" %s",diff.getNewPath()); // copied to
         }
         pw.println();
         pw.println();
     }
        }
    }
}
 
Example 18
Source File: GitClient.java    From steady with Apache License 2.0 4 votes vote down vote up
/** {@inheritDoc} */
public Map<String, String> getCommitLogEntries( Set<String> _revs ) {
	final Map<String, String> hits = new HashMap<String, String>();
	if (!_revs.isEmpty() ) {
		try {
			Repository repository = this.getRepositoryFromPath( null );

			RevWalk walk = new RevWalk( repository );
			//walk.setRevFilter(RevFilter);
			RevCommit commit = null;

			Git git = new Git( repository );
			Iterable<RevCommit> logs = git.log().call();
			Iterator<RevCommit> i = logs.iterator();

			String commitId = null;
			String commitMsg = null;

			// iterate over all commits
			while ( i.hasNext() ) {
				commit = walk.parseCommit( i.next() );

				commitId = commit.getName();
				commitMsg = commit.getFullMessage();

				// iterate over all revisions to search for
				for ( String sid : _revs ) {
					if(sid.contains(":")){
						sid= sid.substring(0,sid.indexOf(":")-1);
					}
					if ( !sid.equals( "" ) && sid.equals( commitId ) ) {
						hits.put( commitId , commitMsg );
						continue;
					}
				}

			}
		}
		catch ( UnknownHostException e ) {
			GitClient.log.error( "Proxy issues?" );
			e.printStackTrace();
		}
		catch ( IOException ioe ) {
			GitClient.log.error( "Something went wrong with the I/O" );
			ioe.printStackTrace();
		}
		catch ( GitAPIException ge ) {
			GitClient.log.error( "Something went wrong with the GIT API" );
			ge.printStackTrace();
		}
	}
	return hits;
}
 
Example 19
Source File: ConfigRepository.java    From gocd with Apache License 2.0 4 votes vote down vote up
private GoConfigRevision getGoConfigRevision(final RevCommit revision) {
    return new GoConfigRevision(contentFromTree(revision.getTree()), revision.getFullMessage());
}
 
Example 20
Source File: GitProctorCore.java    From proctor with Apache License 2.0 4 votes vote down vote up
@Override
public TestVersionResult determineVersions(final String fetchRevision) throws StoreException.ReadException {
    try {
        final RevWalk walk = new RevWalk(git.getRepository());
        final ObjectId commitId = ObjectId.fromString(fetchRevision);
        final RevCommit headTree = walk.parseCommit(commitId);
        final RevTree tree = headTree.getTree();

        // now use a TreeWalk to iterate over all files in the Tree recursively
        // you can set Filters to narrow down the results if needed
        final TreeWalk treeWalk = new TreeWalk(git.getRepository());
        treeWalk.addTree(tree);
        treeWalk.setFilter(AndTreeFilter
            .create(PathFilter.create(testDefinitionsDirectory), PathSuffixFilter.create("definition.json")));
        treeWalk.setRecursive(true);

        final List<TestVersionResult.Test> tests = Lists.newArrayList();
        while (treeWalk.next()) {
            final ObjectId id = treeWalk.getObjectId(0);
            // final RevTree revTree = walk.lookupTree(id);

            final String path = treeWalk.getPathString();
            final String[] pieces = path.split("/");
            final String testname = pieces[pieces.length - 2]; // tree / parent directory name

            // testname, blobid pair
            // note this is the blobid hash - not a commit hash
            // RevTree.id and RevBlob.id
            tests.add(new TestVersionResult.Test(testname, id.name()));
        }

        walk.dispose();
        return new TestVersionResult(
                tests,
                new Date(Long.valueOf(headTree.getCommitTime()) * 1000 /* convert seconds to milliseconds */),
                determineAuthorId(headTree),
                headTree.toObjectId().getName(),
                headTree.getFullMessage()
        );
    } catch (final IOException e) {
        throw new StoreException.ReadException(e);
    }
}