diff --git a/bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/ArchiveWorkItem.java b/bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/ArchiveWorkItem.java index d59fd7331..eea28b475 100644 --- a/bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/ArchiveWorkItem.java +++ b/bots/mlbridge/src/main/java/org/openjdk/skara/bots/mlbridge/ArchiveWorkItem.java @@ -73,7 +73,7 @@ public boolean concurrentWith(WorkItem other) { private void pushMbox(Repository localRepo, String message) { try { - localRepo.addremove(localRepo.root().resolve(".")); + localRepo.add(localRepo.root().resolve(".")); var hash = localRepo.commit(message, bot.emailAddress().fullName().orElseThrow(), bot.emailAddress().address()); localRepo.push(hash, bot.archiveRepo().getUrl(), "master"); } catch (IOException e) { 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 cc22ac940..ee090e7e5 100644 --- a/vcs/src/main/java/org/openjdk/skara/vcs/Repository.java +++ b/vcs/src/main/java/org/openjdk/skara/vcs/Repository.java @@ -30,8 +30,7 @@ import java.nio.file.Path; import java.nio.file.Files; import java.time.Instant; -import java.util.ArrayList; -import java.util.Optional; +import java.util.*; public interface Repository extends ReadOnlyRepository { Repository init() throws IOException; @@ -45,30 +44,18 @@ public interface Repository extends ReadOnlyRepository { void clean() throws IOException; Repository reinitialize() throws IOException; void squash(Hash h) throws IOException; - void add(Path... files) throws IOException; - void remove(Path... files) throws IOException; + void add(List files) throws IOException; + default void add(Path... files) throws IOException { + add(Arrays.asList(files)); + } + void remove(List files) throws IOException; + default void remove(Path... files) throws IOException { + remove(Arrays.asList(files)); + } void pull() throws IOException; void pull(String remote) throws IOException; void pull(String remote, String refspec) throws IOException; - default void addremove(Path... files) throws IOException { - var exists = new ArrayList(); - var missing = new ArrayList(); - for (var file : files) { - if (Files.exists(file)) { - exists.add(file); - } else { - missing.add(file); - } - } - - if (!exists.isEmpty()) { - add(exists.toArray(new Path[0])); - } - - if (!missing.isEmpty()) { - remove(missing.toArray(new Path[0])); - } - } + void addremove() throws IOException; Hash commit(String message, String authorName, String authorEmail) 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 55f5152d9..a085d9f8f 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 @@ -426,7 +426,7 @@ public void squash(Hash h) throws IOException { } @Override - public void add(Path... paths) throws IOException { + public void add(List paths) throws IOException { var cmd = new ArrayList<>(List.of("git", "add")); for (var path : paths) { cmd.add(path.toString()); @@ -437,7 +437,7 @@ public void add(Path... paths) throws IOException { } @Override - public void remove(Path... paths) throws IOException { + public void remove(List paths) throws IOException { var cmd = new ArrayList<>(List.of("git", "rm")); for (var path : paths) { cmd.add(path.toString()); @@ -454,6 +454,13 @@ public void delete(Branch b) throws IOException { } } + @Override + public void addremove() throws IOException { + try (var p = capture("git", "add", "--all")) { + await(p); + } + } + @Override public Hash commit(String message, String authorName, String authorEmail) throws IOException { return commit(message, authorName, authorEmail, null); 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 b799d3d07..6eac171ca 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,7 +857,7 @@ public void move(Path from, Path to) throws IOException { } @Override - public void remove(Path... paths) throws IOException { + public void remove(List paths) throws IOException { var cmd = new ArrayList<>(List.of("hg", "rm")); for (var p : paths) { cmd.add(p.toString()); @@ -868,7 +868,7 @@ public void remove(Path... paths) throws IOException { } @Override - public void add(Path... paths) throws IOException { + public void add(List paths) throws IOException { var cmd = new ArrayList<>(List.of("hg", "add")); for (var p : paths) { cmd.add(p.toString()); @@ -878,6 +878,13 @@ public void add(Path... paths) throws IOException { } } + @Override + public void addremove() throws IOException { + try (var p = capture("hg", "addremove")) { + await(p); + } + } + @Override public Optional upstreamFor(Branch b) throws IOException { // Mercurial doesn't have the concept of remotes like git,