public ModificationData createModificationData()

in git-server/src/main/java/jetbrains/buildServer/buildTriggers/vcs/git/ModificationDataRevWalk.java [41:90]


  public ModificationData createModificationData() throws IOException {
    checkCurrentCommit();

    final String commitId = getCurrentCommit().getId().name();
    String message = GitServerUtil.getFullMessage(getCurrentCommit());
    final PersonIdent authorIdent = GitServerUtil.getAuthorIdent(getCurrentCommit());
    final Date authorDate = authorIdent.getWhen();
    if (LOG.isDebugEnabled()) {
      LOG.debug("Collecting changes in commit " + commitId + ":" + message + " (" + authorDate + ") for " + getGitRoot().debugInfo());
    }

    final String parentVersion = getFirstParentVersion(getCurrentCommit());
    final CommitChangesBuilder builder = new CommitChangesBuilder(getCurrentCommit(), commitId, parentVersion);
    builder.collectCommitChanges();
    final List<VcsChange> changes = builder.getChanges();

    final String author = GitServerUtil.getUser(getGitRoot(), authorIdent);
    final ModificationData result = new ModificationData(
      authorDate,
      changes,
      message,
      author,
      getGitRoot().getOriginalRoot(),
      commitId,
      commitId);

    Map<String, String> attributes = builder.getAttributes();
    if (!attributes.isEmpty())
      result.setAttributes(attributes);

    final PersonIdent commiterIdent = GitServerUtil.getCommitterIdent(getCurrentCommit());
    final String commiter = GitServerUtil.getUser(getGitRoot(), commiterIdent);
    final Date commitDate = commiterIdent.getWhen();
    if (!Objects.equals(authorDate, commitDate)) {
      result.setAttribute(DBVcsModification.TEAMCITY_COMMIT_TIME, Long.toString(commitDate.getTime()));
    }
    if (!Objects.equals(author, commiter)) {
      result.setAttribute(DBVcsModification.TEAMCITY_COMMIT_USER, commiter);
    }

    if (getCurrentCommit().getParentCount() > 0) {
      for (RevCommit parent : getCurrentCommit().getParents()) {
        parseBody(parent);
        result.addParentRevision(parent.getId().name());
      }
    } else {
      result.addParentRevision(ObjectId.zeroId().name());
    }
    return result;
  }