30 import org.openjdk.skara.vcs.openjdk.Issue;
31 import org.openjdk.skara.vcs.openjdk.*;
32
33 import java.io.*;
34 import java.nio.file.Path;
35 import java.util.*;
36 import java.util.stream.Collectors;
37
38 class PullRequestInstance {
39 private final PullRequest pr;
40 private final Repository localRepo;
41 private final Hash targetHash;
42 private final Hash headHash;
43 private final Hash baseHash;
44
45 PullRequestInstance(Path localRepoPath, PullRequest pr) throws IOException {
46 this.pr = pr;
47 var repository = pr.repository();
48
49 // Materialize the PR's target ref
50 localRepo = Repository.materialize(localRepoPath, repository.url(), pr.targetRef());
51 targetHash = localRepo.fetch(repository.url(), pr.targetRef());
52 headHash = localRepo.fetch(repository.url(), pr.headHash().hex());
53 baseHash = localRepo.mergeBase(targetHash, headHash);
54 }
55
56 /**
57 * The Review list is in chronological order, the latest one from a particular reviewer is the
58 * one that is "active".
59 * @param allReviews
60 * @return
61 */
62 static List<Review> filterActiveReviews(List<Review> allReviews) {
63 var reviewPerUser = new LinkedHashMap<HostUser, Review>();
64 for (var review : allReviews) {
65 reviewPerUser.put(review.reviewer(), review);
66 }
67 return new ArrayList<>(reviewPerUser.values());
68 }
69
70 private String commitMessage(List<Review> activeReviews, Namespace namespace, boolean isMerge) throws IOException {
|
30 import org.openjdk.skara.vcs.openjdk.Issue;
31 import org.openjdk.skara.vcs.openjdk.*;
32
33 import java.io.*;
34 import java.nio.file.Path;
35 import java.util.*;
36 import java.util.stream.Collectors;
37
38 class PullRequestInstance {
39 private final PullRequest pr;
40 private final Repository localRepo;
41 private final Hash targetHash;
42 private final Hash headHash;
43 private final Hash baseHash;
44
45 PullRequestInstance(Path localRepoPath, PullRequest pr) throws IOException {
46 this.pr = pr;
47 var repository = pr.repository();
48
49 // Materialize the PR's target ref
50 localRepo = Repository.materialize(localRepoPath, repository.url(),
51 "+" + pr.targetRef() + ":pr_prinstance_" + repository.name());
52 targetHash = localRepo.fetch(repository.url(), pr.targetRef());
53 headHash = localRepo.fetch(repository.url(), pr.headHash().hex());
54 baseHash = localRepo.mergeBase(targetHash, headHash);
55 }
56
57 /**
58 * The Review list is in chronological order, the latest one from a particular reviewer is the
59 * one that is "active".
60 * @param allReviews
61 * @return
62 */
63 static List<Review> filterActiveReviews(List<Review> allReviews) {
64 var reviewPerUser = new LinkedHashMap<HostUser, Review>();
65 for (var review : allReviews) {
66 reviewPerUser.put(review.reviewer(), review);
67 }
68 return new ArrayList<>(reviewPerUser.values());
69 }
70
71 private String commitMessage(List<Review> activeReviews, Namespace namespace, boolean isMerge) throws IOException {
|