private List addPullRequestToChange()

in github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/git/PullRequestImportJob.java [161:203]


  private List<Id> addPullRequestToChange(GHPullRequest pr, Repository gitRepo) throws Exception {
    String destinationBranch = REFS_HEADS + pr.getBase().getRef();
    List<Id> prChanges = Lists.newArrayList();
    ObjectId baseObjectId = ObjectId.fromString(pr.getBase().getSha());
    ObjectId prHeadObjectId = ObjectId.fromString(pr.getHead().getSha());

    try (RevWalk walk = new RevWalk(gitRepo)) {
      walk.markUninteresting(walk.lookupCommit(baseObjectId));
      walk.markStart(walk.lookupCommit(prHeadObjectId));
      walk.sort(RevSort.REVERSE);

      int patchNr = 1;
      for (GHPullRequestCommitDetail ghCommitDetail : pr.listCommits()) {
        status.update(
            Code.SYNC,
            "Patch #" + patchNr,
            "Patch#" + patchNr + ": Inserting PullRequest into Gerrit");
        RevCommit revCommit = walk.parseCommit(ObjectId.fromString(ghCommitDetail.getSha()));

        GHUser prUser = pr.getUser();
        GitUser commitAuthor = ghCommitDetail.getCommit().getAuthor();
        GitHubUser gitHubUser = GitHubUser.from(prUser, commitAuthor);

        Account.Id pullRequestOwner = getOrRegisterAccount(gitHubUser);
        if (project.isPresent()) {
          Id changeId =
              createChange.addCommitToChange(
                  project.get(),
                  gitRepo,
                  destinationBranch,
                  pullRequestOwner,
                  revCommit,
                  getChangeMessage(pr),
                  String.format(TOPIC_FORMAT, new Integer(pr.getNumber())));
          if (changeId != null) {
            prChanges.add(changeId);
          }
        }
      }

      return prChanges;
    }
  }