diff --git a/bots/merge/src/main/java/org/openjdk/skara/bots/merge/MergeBot.java b/bots/merge/src/main/java/org/openjdk/skara/bots/merge/MergeBot.java index c46456231..daa068dac 100644 --- a/bots/merge/src/main/java/org/openjdk/skara/bots/merge/MergeBot.java +++ b/bots/merge/src/main/java/org/openjdk/skara/bots/merge/MergeBot.java @@ -226,7 +226,7 @@ public boolean concurrentWith(WorkItem other) { public void run(Path scratchPath) { try { var sanitizedUrl = - URLEncoder.encode(target.webUrl().toString(), StandardCharsets.UTF_8); + URLEncoder.encode(fork.webUrl().toString(), StandardCharsets.UTF_8); var dir = storage.resolve(sanitizedUrl); Repository repo = null; @@ -241,12 +241,6 @@ public void run(Path scratchPath) { }); } - - // Must set up user.name and user.email for pull to work - var username = fork.forge().currentUser().userName(); - repo.config("user", "name", username, false); - repo.config("user", "email", username + "@openjdk.org", false); - // Sync personal fork var remoteBranches = repo.remoteBranches(target.url().toString()); for (var branch : remoteBranches) { @@ -268,8 +262,11 @@ public void run(Path scratchPath) { log.info("Deciding whether to merge " + fromRepo.name() + ":" + fromBranch.name() + " to " + toBranch.name()); // Checkout the branch to merge into - repo.pull(fork.url().toString(), toBranch.name()); repo.checkout(toBranch, false); + var remoteBranch = new Branch(repo.upstreamFor(toBranch).orElseThrow(() -> + new IllegalStateException("Could not get remote branch name for " + toBranch.name()) + )); + repo.merge(remoteBranch); // should always be a fast-forward merge // Check if merge conflict pull request is present var shouldMerge = true; diff --git a/vcs/src/main/java/org/openjdk/skara/vcs/Repository.java b/vcs/src/main/java/org/openjdk/skara/vcs/Repository.java index ed20809d9..339811ffc 100644 --- a/vcs/src/main/java/org/openjdk/skara/vcs/Repository.java +++ b/vcs/src/main/java/org/openjdk/skara/vcs/Repository.java @@ -102,6 +102,7 @@ Hash amend(String message, void delete(Branch b) throws IOException; void rebase(Hash hash, String committerName, String committerEmail) throws IOException; void merge(Hash hash) throws IOException; + void merge(Branch branch) throws IOException; void merge(Hash hash, String strategy) throws IOException; void abortMerge() throws IOException; void addRemote(String name, String path) throws IOException; diff --git a/vcs/src/main/java/org/openjdk/skara/vcs/git/GitRepository.java b/vcs/src/main/java/org/openjdk/skara/vcs/git/GitRepository.java index bda7edc0a..5ba7a5ffa 100644 --- a/vcs/src/main/java/org/openjdk/skara/vcs/git/GitRepository.java +++ b/vcs/src/main/java/org/openjdk/skara/vcs/git/GitRepository.java @@ -916,11 +916,20 @@ public Repository copyTo(Path destination) throws IOException { @Override public void merge(Hash h) throws IOException { - merge(h, null); + merge(h.hex(), null); + } + + @Override + public void merge(Branch b) throws IOException { + merge(b.name(), null); } @Override public void merge(Hash h, String strategy) throws IOException { + merge(h.hex(), strategy); + } + + private void merge(String ref, String strategy) throws IOException { var cmd = new ArrayList(); cmd.addAll(List.of("git", "-c", "user.name=unused", "-c", "user.email=unused", "merge", "--no-commit")); @@ -928,7 +937,7 @@ public void merge(Hash h, String strategy) throws IOException { cmd.add("-s"); cmd.add(strategy); } - cmd.add(h.hex()); + cmd.add(ref); try (var p = capture(cmd)) { await(p); } diff --git a/vcs/src/main/java/org/openjdk/skara/vcs/hg/HgRepository.java b/vcs/src/main/java/org/openjdk/skara/vcs/hg/HgRepository.java index f7b0bc1d5..a75433ba4 100644 --- a/vcs/src/main/java/org/openjdk/skara/vcs/hg/HgRepository.java +++ b/vcs/src/main/java/org/openjdk/skara/vcs/hg/HgRepository.java @@ -857,15 +857,24 @@ public Repository copyTo(Path destination) throws IOException { @Override public void merge(Hash h) throws IOException { - merge(h, null); + merge(h.hex(), null); } @Override - public void merge(Hash h, String stragegy) throws IOException { + public void merge(Branch b) throws IOException { + merge(b.name(), null); + } + + @Override + public void merge(Hash h, String strategy) throws IOException { + merge(h.hex(), strategy); + } + + private void merge(String ref, String strategy) throws IOException { var cmd = new ArrayList(); - cmd.addAll(List.of("hg", "merge", "--rev=" + h.hex())); - if (stragegy != null) { - cmd.add("--tool=" + stragegy); + cmd.addAll(List.of("hg", "merge", "--rev=" + ref)); + if (strategy != null) { + cmd.add("--tool=" + strategy); } try (var p = capture(cmd)) { await(p);