From 8ba74dc91e7ff6ee27f316c3be72d848892eb874 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 27 Nov 2024 10:28:15 +0100 Subject: [PATCH] [jOOQ/jOOQ#9506] More work on Migrations API: - GitCommitProvider should distinguish between uncommitted (in index) and untracked (not in index) --- .../migrations/jgit/GitCommitProvider.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/jOOQ-migrations/src/main/java/org/jooq/migrations/jgit/GitCommitProvider.java b/jOOQ-migrations/src/main/java/org/jooq/migrations/jgit/GitCommitProvider.java index 567bb8ddfd..802279d77c 100644 --- a/jOOQ-migrations/src/main/java/org/jooq/migrations/jgit/GitCommitProvider.java +++ b/jOOQ-migrations/src/main/java/org/jooq/migrations/jgit/GitCommitProvider.java @@ -82,6 +82,7 @@ import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevTag; import org.eclipse.jgit.treewalk.TreeWalk; import org.eclipse.jgit.util.io.DisabledOutputStream; +import org.jetbrains.annotations.NotNull; /** * A {@link CommitProvider} that produces versions from a git repository. @@ -217,17 +218,25 @@ public final class GitCommitProvider implements CommitProvider { private static final Comparator COMMIT_COMPARATOR = (o1, o2) -> o1.getCommitTime() - o2.getCommitTime(); private final Commit commit(Commit commit, Status status) { - List files = new ArrayList<>(); + List uncommitted = new ArrayList<>(); + List untracked = new ArrayList<>(); - add(files, status.getAdded()); - add(files, status.getChanged()); - add(files, status.getModified()); - add(files, status.getUntracked()); - del(files, status.getMissing()); - del(files, status.getRemoved()); + add(uncommitted, status.getAdded()); + add(uncommitted, status.getChanged()); + del(uncommitted, status.getRemoved()); // [#9506] TODO: It should be possible to migrate to uncommitted changes in dev mode. - return commit.commit("uncommitted", "uncommitted", files).valid(false); + if (!uncommitted.isEmpty()) + commit = commit.commit("uncommitted", "uncommitted", uncommitted).valid(false); + + add(untracked, status.getModified()); + add(untracked, status.getUntracked()); + del(untracked, status.getMissing()); + + if (!untracked.isEmpty()) + commit = commit.commit("untracked", "untracked", untracked).valid(false); + + return commit; } private void add(List files, Set paths) {