diff --git a/scm-plugins/scm-git-plugin/build.gradle b/scm-plugins/scm-git-plugin/build.gradle index cf9c37a989..d77a1e6675 100644 --- a/scm-plugins/scm-git-plugin/build.gradle +++ b/scm-plugins/scm-git-plugin/build.gradle @@ -27,7 +27,7 @@ plugins { id 'org.scm-manager.smp' version '0.7.5' } -def jgitVersion = '5.10.0.202012080955-r-scm2' +def jgitVersion = '5.11.1.202105131744-r-scm1' dependencies { // required by scm-it diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitConfig.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitConfig.java index f699093f73..2efac8451a 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitConfig.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitConfig.java @@ -26,6 +26,8 @@ package sonia.scm.repository; //~--- JDK imports ------------------------------------------------------------ +import com.google.common.base.Strings; + import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; @@ -39,6 +41,8 @@ import javax.xml.bind.annotation.XmlTransient; @XmlAccessorType(XmlAccessType.FIELD) public class GitConfig extends RepositoryConfig { + private static final String FALLBACK_BRANCH = "main"; + @SuppressWarnings("WeakerAccess") // This might be needed for permission checking public static final String PERMISSION = "git"; @@ -49,7 +53,7 @@ public class GitConfig extends RepositoryConfig { private boolean nonFastForwardDisallowed; @XmlElement(name = "default-branch") - private String defaultBranch = "main"; + private String defaultBranch = FALLBACK_BRANCH; public String getGcExpression() { return gcExpression; @@ -68,6 +72,9 @@ public class GitConfig extends RepositoryConfig { } public String getDefaultBranch() { + if (Strings.isNullOrEmpty(defaultBranch)) { + return FALLBACK_BRANCH; + } return defaultBranch; } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitWorkingCopyInitializer.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitWorkingCopyInitializer.java index 77d9399825..45df640830 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitWorkingCopyInitializer.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitWorkingCopyInitializer.java @@ -27,6 +27,7 @@ package sonia.scm.repository.spi; import com.google.common.base.Stopwatch; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.api.errors.TransportException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; @@ -75,6 +76,13 @@ class GitWorkingCopyInitializer { } return new ParentAndClone<>(null, clone, target); + } catch (TransportException e) { + String message = e.getMessage(); + if (initialBranch != null && message.contains(initialBranch) && message.contains("not found")) { + throw notFound(entity("Branch", initialBranch).in(context.getRepository())); + } else { + throw new InternalRepositoryException(context.getRepository(), "could not clone working copy of repository", e); + } } catch (GitAPIException | IOException e) { throw new InternalRepositoryException(context.getRepository(), "could not clone working copy of repository", e); } finally { diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommand_withEmptyRepositoryTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommand_withEmptyRepositoryTest.java index 97ab9a9776..74989cca8c 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommand_withEmptyRepositoryTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommand_withEmptyRepositoryTest.java @@ -60,14 +60,14 @@ public class GitModifyCommand_withEmptyRepositoryTest extends GitModifyCommandTe } @Test - public void shouldCreateCommitOnMasterByDefault() throws IOException, GitAPIException { + public void shouldCreateCommitOnMainByDefault() throws IOException, GitAPIException { createContext().getGlobalConfig().setDefaultBranch(""); executeModifyCommand(); try (Git git = new Git(createContext().open())) { List branches = git.branchList().call(); - assertThat(branches).extracting("name").containsExactly("refs/heads/master"); + assertThat(branches).extracting("name").containsExactly("refs/heads/main"); } }