From 6f0b92ff22ff58a4c8eb9de8d9b3281d77852070 Mon Sep 17 00:00:00 2001 From: Christian Halstrick Date: Fri, 17 Oct 2014 10:05:32 +0200 Subject: [PATCH] RebaseCommand should ignore submodule modifications Before a rebase happens the RebaseCommand checks that the working tree is clean. We don't want to start a rebase on a dirty working tree. If the working tree is dirty a rebase should not be allowed. But RebaseCommand should ignore modifications done to submodules. E.g. if a submodules HEAD points to but the root repository has in index that the submodule should point to then this should not prohibit a rebase. Also native git allows a rebase in this case. Since jgit's StatusCommand has learned to ignore submodule changes this is now used by the RebaseCommand to determine the repository state correctly. Bug: 446922 Change-Id: I487bf7484dca3f5501e6e514584e2871524eea19 --- org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java index 7cc682e6b..47424a907 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/RebaseCommand.java @@ -99,6 +99,7 @@ import org.eclipse.jgit.merge.MergeStrategy; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.revwalk.filter.RevFilter; +import org.eclipse.jgit.submodule.SubmoduleWalk.IgnoreSubmoduleMode; import org.eclipse.jgit.treewalk.TreeWalk; import org.eclipse.jgit.treewalk.filter.TreeFilter; import org.eclipse.jgit.util.FileUtils; @@ -294,7 +295,7 @@ public class RebaseCommand extends GitCommand { walk.parseCommit(repo.resolve(Constants.HEAD)), upstreamCommit)) { org.eclipse.jgit.api.Status status = Git.wrap(repo) - .status().call(); + .status().setIgnoreSubmodules(IgnoreSubmoduleMode.ALL).call(); if (status.hasUncommittedChanges()) { List list = new ArrayList(); list.addAll(status.getUncommittedChanges());