From 4ec7006108074d821848e5c94e518db2a2cf138a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 25 Mar 2019 11:28:29 +0100 Subject: [PATCH 1/7] Enhance branch object with default flag --- .../java/sonia/scm/repository/Branch.java | 19 +++++++++++++++++-- .../repository/spi/GitBranchesCommand.java | 2 +- .../client/spi/GitBranchCommand.java | 2 +- .../scm/repository/spi/HgBranchesCommand.java | 2 +- .../client/spi/HgBranchCommand.java | 2 +- .../sonia/scm/api/v2/resources/BranchDto.java | 1 + .../DefaultChangesetToChangesetDtoMapper.java | 2 +- .../v2/resources/BranchRootResourceTest.java | 4 ++-- .../BranchToBranchDtoMapperTest.java | 2 +- 9 files changed, 26 insertions(+), 10 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/repository/Branch.java b/scm-core/src/main/java/sonia/scm/repository/Branch.java index ce1d43c82b..d8950c80ac 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Branch.java +++ b/scm-core/src/main/java/sonia/scm/repository/Branch.java @@ -66,7 +66,7 @@ public final class Branch implements Serializable * This constructor should only be called from JAXB. * */ - public Branch() {} + Branch() {} /** * Constructs a new branch. @@ -75,10 +75,19 @@ public final class Branch implements Serializable * @param name name of the branch * @param revision latest revision of the branch */ - public Branch(String name, String revision) + Branch(String name, String revision, boolean defaultBranch) { this.name = name; this.revision = revision; + this.defaultBranch = defaultBranch; + } + + public static Branch normalBranch(String name, String revision) { + return new Branch(name, revision, false); + } + + public static Branch defaultBranch(String name, String revision) { + return new Branch(name, revision, true); } //~--- methods -------------------------------------------------------------- @@ -162,6 +171,10 @@ public final class Branch implements Serializable return revision; } + public boolean isDefaultBranch() { + return defaultBranch; + } + //~--- fields --------------------------------------------------------------- /** name of the branch */ @@ -169,4 +182,6 @@ public final class Branch implements Serializable /** Field description */ private String revision; + + private boolean defaultBranch; } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java index 4922752b6f..110e02d431 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java @@ -92,7 +92,7 @@ public class GitBranchesCommand extends AbstractGitCommand if (branchName != null) { - branch = new Branch(branchName, GitUtil.getId(ref.getObjectId())); + branch = Branch.normalBranch(branchName, GitUtil.getId(ref.getObjectId())); } return branch; diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/client/spi/GitBranchCommand.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/client/spi/GitBranchCommand.java index 5a721a7aa5..19197d009d 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/client/spi/GitBranchCommand.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/client/spi/GitBranchCommand.java @@ -72,7 +72,7 @@ public class GitBranchCommand implements BranchCommand try { Ref ref = git.branchCreate().setName(name).call(); - return new Branch(name, GitUtil.getId(ref.getObjectId())); + return Branch.normalBranch(name, GitUtil.getId(ref.getObjectId())); } catch (GitAPIException ex) { diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java index 5c38205393..4ac4218168 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java @@ -88,7 +88,7 @@ public class HgBranchesCommand extends AbstractCommand node = changeset.getNode(); } - return new Branch(hgBranch.getName(), node); + return Branch.normalBranch(hgBranch.getName(), node); } }); diff --git a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/client/spi/HgBranchCommand.java b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/client/spi/HgBranchCommand.java index 74d1b1f742..fa7371f840 100644 --- a/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/client/spi/HgBranchCommand.java +++ b/scm-plugins/scm-hg-plugin/src/test/java/sonia/scm/repository/client/spi/HgBranchCommand.java @@ -53,7 +53,7 @@ public class HgBranchCommand implements BranchCommand public Branch branch(String name) throws IOException { com.aragost.javahg.commands.BranchCommand.on(repository).set(name); - return new Branch(name, repository.tip().getNode()); + return Branch.normalBranch(name, repository.tip().getNode()); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java index 343d9c8bc8..c27baf3666 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/BranchDto.java @@ -12,6 +12,7 @@ public class BranchDto extends HalRepresentation { private String name; private String revision; + private boolean defaultBranch; BranchDto(Links links, Embedded embedded) { super(links, embedded); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java index 479a43aef1..1ae67c4282 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/DefaultChangesetToChangesetDtoMapper.java @@ -60,7 +60,7 @@ public abstract class DefaultChangesetToChangesetDtoMapper extends HalAppenderMa } if (repositoryService.isSupported(Command.BRANCHES)) { embeddedBuilder.with("branches", branchCollectionToDtoMapper.getBranchDtoList(namespace, name, - getListOfObjects(source.getBranches(), branchName -> new Branch(branchName, source.getId())))); + getListOfObjects(source.getBranches(), branchName -> Branch.normalBranch(branchName, source.getId())))); } } embeddedBuilder.with("parents", getListOfObjects(source.getParents(), parent -> changesetToParentDtoMapper.map(new Changeset(parent, 0L, null), repository))); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java index 9216922e19..d432dee18f 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchRootResourceTest.java @@ -125,7 +125,7 @@ public class BranchRootResourceTest extends RepositoryTestBase { @Test public void shouldFindExistingBranch() throws Exception { - when(branchesCommandBuilder.getBranches()).thenReturn(new Branches(new Branch("master", "revision"))); + when(branchesCommandBuilder.getBranches()).thenReturn(new Branches(Branch.normalBranch("master", "revision"))); MockHttpRequest request = MockHttpRequest.get(BRANCH_URL); MockHttpResponse response = new MockHttpResponse(); @@ -153,7 +153,7 @@ public class BranchRootResourceTest extends RepositoryTestBase { when(logCommandBuilder.setBranch(anyString())).thenReturn(logCommandBuilder); when(logCommandBuilder.getChangesets()).thenReturn(changesetPagingResult); Branches branches = mock(Branches.class); - List branchList = Lists.newArrayList(new Branch("master",id)); + List branchList = Lists.newArrayList(Branch.normalBranch("master",id)); when(branches.getBranches()).thenReturn(branchList); when(branchesCommandBuilder.getBranches()).thenReturn(branches); MockHttpRequest request = MockHttpRequest.get(BRANCH_URL + "/changesets/"); diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapperTest.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapperTest.java index 3e64ab95b6..9c15271aa2 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapperTest.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/BranchToBranchDtoMapperTest.java @@ -33,7 +33,7 @@ class BranchToBranchDtoMapperTest { }); mapper.setRegistry(registry); - Branch branch = new Branch("master", "42"); + Branch branch = Branch.normalBranch("master", "42"); BranchDto dto = mapper.map(branch, new NamespaceAndName("hitchhiker", "heart-of-gold")); assertThat(dto.getLinks().getLinkBy("ka").get().getHref()).isEqualTo("http://hitchhiker/heart-of-gold/master"); From b36f1ca3e4c94ac3632a2b96b09bde777c716e7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 25 Mar 2019 12:08:44 +0100 Subject: [PATCH 2/7] Mark default branch for git --- .../java/sonia/scm/repository/Branch.java | 3 +- .../repository/spi/GitBranchesCommand.java | 95 ++++++++------ .../spi/GitBranchesCommandTest.java | 118 ++++++++++++++++++ 3 files changed, 175 insertions(+), 41 deletions(-) create mode 100644 scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBranchesCommandTest.java diff --git a/scm-core/src/main/java/sonia/scm/repository/Branch.java b/scm-core/src/main/java/sonia/scm/repository/Branch.java index d8950c80ac..c0a7289912 100644 --- a/scm-core/src/main/java/sonia/scm/repository/Branch.java +++ b/scm-core/src/main/java/sonia/scm/repository/Branch.java @@ -116,7 +116,8 @@ public final class Branch implements Serializable final Branch other = (Branch) obj; return Objects.equal(name, other.name) - && Objects.equal(revision, other.revision); + && Objects.equal(revision, other.revision) + && Objects.equal(defaultBranch, other.defaultBranch); } /** diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java index 110e02d431..81b38cab5c 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java @@ -34,11 +34,15 @@ package sonia.scm.repository.spi; //~--- non-JDK imports -------------------------------------------------------- -import com.google.common.base.Function; -import com.google.common.collect.Lists; +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Strings; +import org.checkerframework.checker.nullness.qual.Nullable; +import org.checkerframework.common.value.qual.UnknownVal; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Ref; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import sonia.scm.repository.Branch; import sonia.scm.repository.GitUtil; import sonia.scm.repository.InternalRepositoryException; @@ -46,6 +50,8 @@ import sonia.scm.repository.Repository; import java.io.IOException; import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; //~--- JDK imports ------------------------------------------------------------ @@ -53,17 +59,10 @@ import java.util.List; * * @author Sebastian Sdorra */ -public class GitBranchesCommand extends AbstractGitCommand - implements BranchesCommand -{ +public class GitBranchesCommand extends AbstractGitCommand implements BranchesCommand { + + private static final Logger LOG = LoggerFactory.getLogger(GitBranchesCommand.class); - /** - * Constructs ... - * - * - * @param context - * @param repository - */ public GitBranchesCommand(GitContext context, Repository repository) { super(context, repository); @@ -73,38 +72,54 @@ public class GitBranchesCommand extends AbstractGitCommand @Override public List getBranches() throws IOException { - List branches = null; + Git git = createGit(); - Git git = new Git(open()); + String defaultBranchName = determineDefaultBranchName(git); - try - { - List refs = git.branchList().call(); - - branches = Lists.transform(refs, new Function() - { - - @Override - public Branch apply(Ref ref) - { - Branch branch = null; - String branchName = GitUtil.getBranch(ref); - - if (branchName != null) - { - branch = Branch.normalBranch(branchName, GitUtil.getId(ref.getObjectId())); - } - - return branch; - } - }); - - } - catch (GitAPIException ex) - { + try { + return git + .branchList() + .call() + .stream() + .map(ref -> createBranchObject(defaultBranchName, ref)) + .collect(Collectors.toList()); + } catch (GitAPIException ex) { throw new InternalRepositoryException(repository, "could not read branches", ex); } + } - return branches; + @VisibleForTesting + Git createGit() throws IOException { + return new Git(open()); + } + + @Nullable + private Branch createBranchObject(String defaultBranchName, Ref ref) { + String branchName = GitUtil.getBranch(ref); + + if (branchName == null) { + LOG.warn("could not determine branch name for branch name {} at revision {}", ref.getName(), ref.getObjectId()); + return null; + } else { + if (branchName.equals(defaultBranchName)) { + return Branch.defaultBranch(branchName, GitUtil.getId(ref.getObjectId())); + } else { + return Branch.normalBranch(branchName, GitUtil.getId(ref.getObjectId())); + } + } + } + + private String determineDefaultBranchName(Git git) { + String defaultBranchName = context.getConfig().getDefaultBranch(); + if (Strings.isNullOrEmpty(defaultBranchName)) { + return getRepositoryHeadRef(git).map(GitUtil::getBranch).orElse(null); + } else { + return defaultBranchName; + } + } + + @UnknownVal + Optional getRepositoryHeadRef(Git git) { + return GitUtil.getRepositoryHeadRef(git.getRepository()); } } diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBranchesCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBranchesCommandTest.java new file mode 100644 index 0000000000..af765bc7aa --- /dev/null +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBranchesCommandTest.java @@ -0,0 +1,118 @@ +package sonia.scm.repository.spi; + +import org.checkerframework.common.value.qual.UnknownVal; +import org.eclipse.jgit.api.Git; +import org.eclipse.jgit.api.ListBranchCommand; +import org.eclipse.jgit.api.errors.GitAPIException; +import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.Ref; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; +import sonia.scm.repository.Branch; +import sonia.scm.repository.GitRepositoryConfig; +import sonia.scm.repository.Repository; + +import java.io.IOException; +import java.util.List; +import java.util.Optional; + +import static java.util.Arrays.asList; +import static java.util.Collections.emptyList; +import static java.util.Optional.of; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.lenient; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +class GitBranchesCommandTest { + + @Mock + GitContext context; + @Mock + Git git; + @Mock + ListBranchCommand listBranchCommand; + @Mock + GitRepositoryConfig gitRepositoryConfig; + + GitBranchesCommand branchesCommand; + private Ref master; + + @BeforeEach + void initContext() { + when(context.getConfig()).thenReturn(gitRepositoryConfig); + } + + @BeforeEach + void initCommand() { + master = createRef("master", "0000"); + branchesCommand = new GitBranchesCommand(context, new Repository("1", "git", "space", "X")) { + @Override + Git createGit() { + return git; + } + + @Override + @UnknownVal Optional getRepositoryHeadRef(Git git) { + return of(master); + } + }; + when(git.branchList()).thenReturn(listBranchCommand); + } + + @Test + void shouldCreateEmptyListWithoutBranches() throws IOException, GitAPIException { + when(listBranchCommand.call()).thenReturn(emptyList()); + + List branches = branchesCommand.getBranches(); + + assertThat(branches).isEmpty(); + } + + @Test + void shouldMapNormalBranch() throws IOException, GitAPIException { + Ref branch = createRef("branch", "1337"); + when(listBranchCommand.call()).thenReturn(asList(branch)); + + List branches = branchesCommand.getBranches(); + + assertThat(branches).containsExactly(Branch.normalBranch("branch", "1337")); + } + + @Test + void shouldMarkMasterBranchWithMasterFromConfig() throws IOException, GitAPIException { + Ref branch = createRef("branch", "1337"); + when(listBranchCommand.call()).thenReturn(asList(branch)); + when(gitRepositoryConfig.getDefaultBranch()).thenReturn("branch"); + + List branches = branchesCommand.getBranches(); + + assertThat(branches).containsExactlyInAnyOrder(Branch.defaultBranch("branch", "1337")); + } + + @Test + void shouldMarkMasterBranchWithMasterFromHead() throws IOException, GitAPIException { + Ref branch = createRef("branch", "1337"); + when(listBranchCommand.call()).thenReturn(asList(branch, master)); + + List branches = branchesCommand.getBranches(); + + assertThat(branches).containsExactlyInAnyOrder( + Branch.normalBranch("branch", "1337"), + Branch.defaultBranch("master", "0000") + ); + } + + private Ref createRef(String branchName, String revision) { + Ref ref = mock(Ref.class); + lenient().when(ref.getName()).thenReturn("refs/heads/" + branchName); + ObjectId objectId = mock(ObjectId.class); + lenient().when(objectId.name()).thenReturn(revision); + lenient().when(ref.getObjectId()).thenReturn(objectId); + return ref; + } +} From 56e61ab966bb5b4c562dd4746578c61699083696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 25 Mar 2019 14:20:23 +0100 Subject: [PATCH 3/7] Mark default branch for hg --- .../java/sonia/scm/repository/spi/HgBranchesCommand.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java index 4ac4218168..55b937be4b 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgBranchesCommand.java @@ -53,6 +53,8 @@ public class HgBranchesCommand extends AbstractCommand implements BranchesCommand { + private static final String DEFAULT_BRANCH_NAME = "default"; + /** * Constructs ... * @@ -88,7 +90,11 @@ public class HgBranchesCommand extends AbstractCommand node = changeset.getNode(); } - return Branch.normalBranch(hgBranch.getName(), node); + if (DEFAULT_BRANCH_NAME.equals(hgBranch.getName())) { + return Branch.defaultBranch(hgBranch.getName(), node); + } else { + return Branch.normalBranch(hgBranch.getName(), node); + } } }); From 5ca4bf6b302e83256cf06de9452b70d2c1d229bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 29 Mar 2019 10:03:59 +0100 Subject: [PATCH 4/7] Create intermediate branch From b14eadb13d9fd8460acc84c52b6b6942f9d03e5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Mon, 25 Mar 2019 16:44:05 +0100 Subject: [PATCH 5/7] Add missing mockito config file --- .../resources/mockito-extensions/org.mockito.plugins.MockMaker | 1 + 1 file changed, 1 insertion(+) create mode 100644 scm-plugins/scm-git-plugin/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker diff --git a/scm-plugins/scm-git-plugin/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/scm-plugins/scm-git-plugin/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 0000000000..1f0955d450 --- /dev/null +++ b/scm-plugins/scm-git-plugin/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline From 2a19313df5153c730b8266c18d31f4bda8c29dd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Fri, 29 Mar 2019 11:06:10 +0100 Subject: [PATCH 6/7] Remove unknown val --- .../main/java/sonia/scm/repository/spi/GitBranchesCommand.java | 3 +-- .../java/sonia/scm/repository/spi/GitBranchesCommandTest.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java index 81b38cab5c..ed0ac772f1 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitBranchesCommand.java @@ -37,7 +37,6 @@ package sonia.scm.repository.spi; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Strings; import org.checkerframework.checker.nullness.qual.Nullable; -import org.checkerframework.common.value.qual.UnknownVal; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Ref; @@ -118,8 +117,8 @@ public class GitBranchesCommand extends AbstractGitCommand implements BranchesCo } } - @UnknownVal Optional getRepositoryHeadRef(Git git) { return GitUtil.getRepositoryHeadRef(git.getRepository()); } } + diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBranchesCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBranchesCommandTest.java index af765bc7aa..1c737deab8 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBranchesCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBranchesCommandTest.java @@ -1,6 +1,5 @@ package sonia.scm.repository.spi; -import org.checkerframework.common.value.qual.UnknownVal; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.ListBranchCommand; import org.eclipse.jgit.api.errors.GitAPIException; @@ -57,7 +56,7 @@ class GitBranchesCommandTest { } @Override - @UnknownVal Optional getRepositoryHeadRef(Git git) { + Optional getRepositoryHeadRef(Git git) { return of(master); } }; From ada8977175c03d7e091ca3c5042af36000035ab7 Mon Sep 17 00:00:00 2001 From: Rene Pfeuffer Date: Fri, 29 Mar 2019 10:23:56 +0000 Subject: [PATCH 7/7] Close branch feature/mark_default_branch