Browse Source

Fetch submodule repo before resolving commits

By default, this is turned off unless cmd.setFetch(true) is given.  It
will default to true in a future release to mimic c-git behaviour.

This is needed to prevent Eclipse from crashing with "Missing unknown
[REF]" when cloning a repo with submodules.

Bug: 470318
Change-Id: I8ae37c7c5bd2408cead8d57dd13e93e01e0e9dc1
Signed-off-by: Michael FIG <michael@fig.org>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
stable-4.9
Michael FIG 8 years ago committed by Matthias Sohn
parent
commit
06835f3e4f
  1. 29
      org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleUpdateCommand.java

29
org.eclipse.jgit/src/org/eclipse/jgit/api/SubmoduleUpdateCommand.java

@ -91,6 +91,8 @@ public class SubmoduleUpdateCommand extends
private CloneCommand.Callback callback;
private boolean fetch = false;
/**
* @param repo
*/
@ -113,6 +115,19 @@ public class SubmoduleUpdateCommand extends
return this;
}
/**
* Whether to fetch the submodules before we update them. By default, this
* is set to <code>false</code>
*
* @param fetch
* @return this command
* @since 4.9
*/
public SubmoduleUpdateCommand setFetch(final boolean fetch) {
this.fetch = fetch;
return this;
}
/**
* Add repository-relative submodule path to initialize
*
@ -161,7 +176,7 @@ public class SubmoduleUpdateCommand extends
continue;
Repository submoduleRepo = generator.getRepository();
// Clone repository is not present
// Clone repository if not present
if (submoduleRepo == null) {
if (callback != null) {
callback.cloningSubmodule(generator.getPath());
@ -175,6 +190,18 @@ public class SubmoduleUpdateCommand extends
if (monitor != null)
clone.setProgressMonitor(monitor);
submoduleRepo = clone.call().getRepository();
} else if (this.fetch) {
if (callback != null) {
// FIXME: Do we need a new callback to tell them we're
// fetching?
callback.cloningSubmodule(generator.getPath());
}
FetchCommand fetchCommand = Git.wrap(submoduleRepo).fetch();
if (monitor != null) {
fetchCommand.setProgressMonitor(monitor);
}
configure(fetchCommand);
fetchCommand.call();
}
try (RevWalk walk = new RevWalk(submoduleRepo)) {

Loading…
Cancel
Save