From 5cb32b268f979acb1b214cb249af6129572b517c Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 10 Nov 2016 21:56:27 +0100 Subject: [PATCH] #873 clear repository caches, if the git default branch has changed --- .../repository/ClearRepositoryCacheEvent.java | 64 +++++++ .../api/RepositoryServiceFactory.java | 11 ++ .../sonia/scm/repository/GitConstants.java | 49 ++++++ .../GitRepositoryModifyListener.java | 97 +++++++++++ .../repository/spi/AbstractGitCommand.java | 6 +- .../GitRepositoryModifyListenerTest.java | 163 ++++++++++++++++++ .../repository/spi/GitBlameCommandTest.java | 3 +- .../repository/spi/GitBrowseCommandTest.java | 3 +- .../scm/repository/spi/GitCatCommandTest.java | 3 +- .../scm/repository/spi/GitLogCommandTest.java | 3 +- 10 files changed, 394 insertions(+), 8 deletions(-) create mode 100644 scm-core/src/main/java/sonia/scm/repository/ClearRepositoryCacheEvent.java create mode 100644 scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitConstants.java create mode 100644 scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryModifyListener.java create mode 100644 scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryModifyListenerTest.java diff --git a/scm-core/src/main/java/sonia/scm/repository/ClearRepositoryCacheEvent.java b/scm-core/src/main/java/sonia/scm/repository/ClearRepositoryCacheEvent.java new file mode 100644 index 0000000000..13c228bd34 --- /dev/null +++ b/scm-core/src/main/java/sonia/scm/repository/ClearRepositoryCacheEvent.java @@ -0,0 +1,64 @@ +/** + * Copyright (c) 2014, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ +package sonia.scm.repository; + +import sonia.scm.event.Event; + +/** + * Event which causes clearing of repository cache. + * + * @author Sebastian Sdorra + * @since 1.50 + */ +@Event +public class ClearRepositoryCacheEvent { + + private final Repository repository; + + /** + * Constructs a new instance. + * + * @param repository repository + */ + public ClearRepositoryCacheEvent(Repository repository) { + this.repository = repository; + } + + /** + * Returns repository. + * + * @return repository + */ + public Repository getRepository() { + return repository; + } + +} diff --git a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java index 68e7f30ba4..6af1eedc0c 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryServiceFactory.java @@ -37,6 +37,7 @@ package sonia.scm.repository.api; import com.google.common.base.Preconditions; import com.google.common.base.Strings; +import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.google.inject.Singleton; @@ -69,6 +70,8 @@ import sonia.scm.security.ScmSecurityException; //~--- JDK imports ------------------------------------------------------------ import java.util.Set; +import sonia.scm.event.ScmEventBus; +import sonia.scm.repository.ClearRepositoryCacheEvent; /** * The {@link RepositoryServiceFactory} is the entrypoint of the repository api. @@ -172,6 +175,9 @@ public final class RepositoryServiceFactory repositoryManager.addHook(cch); repositoryManager.addListener(cch); + + // register cache clear hook for incoming events + ScmEventBus.getInstance().register(cch); } //~--- methods -------------------------------------------------------------- @@ -345,6 +351,11 @@ public final class RepositoryServiceFactory //~--- methods ------------------------------------------------------------ + @Subscribe + public void onEvent(ClearRepositoryCacheEvent event) { + clearCaches(event.getRepository().getId()); + } + /** * Method description * diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitConstants.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitConstants.java new file mode 100644 index 0000000000..6d833577e1 --- /dev/null +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitConstants.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2014, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ +package sonia.scm.repository; + +/** + * Constants for Git. + * + * @author Sebastian Sdorra + * @since 1.50 + */ +public final class GitConstants { + + /** + * Default branch repository property. + */ + public static final String PROPERTY_DEFAULT_BRANCH = "git.default-branch"; + + private GitConstants() { + } + +} diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryModifyListener.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryModifyListener.java new file mode 100644 index 0000000000..4309257350 --- /dev/null +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/GitRepositoryModifyListener.java @@ -0,0 +1,97 @@ +/** + * Copyright (c) 2014, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ +package sonia.scm.repository; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Objects; +import com.google.common.eventbus.Subscribe; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import sonia.scm.EagerSingleton; +import sonia.scm.HandlerEvent; +import sonia.scm.event.ScmEventBus; +import sonia.scm.plugin.ext.Extension; + +/** + * Repository listener which handles git related repository events. + * + * @author Sebastian Sdorra + * @since 1.50 + */ +@Extension +@EagerSingleton +public class GitRepositoryModifyListener { + + /** + * the logger for GitRepositoryModifyListener + */ + private static final Logger logger = LoggerFactory.getLogger(GitRepositoryModifyListener.class); + + /** + * Receives {@link RepositoryModificationEvent} and fires a {@link ClearRepositoryCacheEvent} if + * the default branch of a git repository was modified. + * + * @param event repository modification event + */ + @Subscribe + public void handleEvent(RepositoryModificationEvent event){ + Repository repository = event.getItem(); + + if ( isModifyEvent(event) && + isGitRepository(event.getItem()) && + hasDefaultBranchChanged(event.getItemBeforeModification(), repository)) + { + logger.info("git default branch of repository {} has changed, sending clear cache event", repository.getId()); + sendClearRepositoryCacheEvent(repository); + } + } + + @VisibleForTesting + protected void sendClearRepositoryCacheEvent(Repository repository) { + ScmEventBus.getInstance().post(new ClearRepositoryCacheEvent(repository)); + } + + private boolean isModifyEvent(RepositoryEvent event) { + return event.getEventType() == HandlerEvent.MODIFY; + } + + private boolean isGitRepository(Repository repository) { + return GitRepositoryHandler.TYPE_NAME.equals(repository.getType()); + } + + private boolean hasDefaultBranchChanged(Repository old, Repository current) { + return !Objects.equal( + old.getProperty(GitConstants.PROPERTY_DEFAULT_BRANCH), + current.getProperty(GitConstants.PROPERTY_DEFAULT_BRANCH) + ); + } + +} diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitCommand.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitCommand.java index 9680a9136a..d865f77e48 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitCommand.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/AbstractGitCommand.java @@ -44,6 +44,7 @@ import java.io.IOException; import org.eclipse.jgit.lib.ObjectId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import sonia.scm.repository.GitConstants; import sonia.scm.repository.GitUtil; /** @@ -57,9 +58,6 @@ public class AbstractGitCommand * the logger for AbstractGitCommand */ private static final Logger logger = LoggerFactory.getLogger(AbstractGitCommand.class); - - @VisibleForTesting - static final String PROPERTY_DEFAULT_BRANCH = "git.default-branch"; /** * Constructs ... @@ -113,7 +111,7 @@ public class AbstractGitCommand protected ObjectId getDefaultBranch(Repository gitRepository) throws IOException { ObjectId head; - String defaultBranchName = repository.getProperty(PROPERTY_DEFAULT_BRANCH); + String defaultBranchName = repository.getProperty(GitConstants.PROPERTY_DEFAULT_BRANCH); if (!Strings.isNullOrEmpty(defaultBranchName)) { head = GitUtil.getBranchId(gitRepository, defaultBranchName); } else { diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryModifyListenerTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryModifyListenerTest.java new file mode 100644 index 0000000000..9f6768aeac --- /dev/null +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/GitRepositoryModifyListenerTest.java @@ -0,0 +1,163 @@ +/** + * Copyright (c) 2014, Sebastian Sdorra + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of SCM-Manager; nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * http://bitbucket.org/sdorra/scm-manager + * + */ + +package sonia.scm.repository; + +import org.junit.Test; +import static org.junit.Assert.*; +import org.junit.Before; +import sonia.scm.HandlerEvent; + +/** + * Unit tests for {@link GitRepositoryModifyListener}. + * + * @author Sebastian Sdorra + */ +public class GitRepositoryModifyListenerTest { + + private GitRepositoryModifyTestListener repositoryModifyListener; + + /** + * Set up test object. + */ + @Before + public void setUpObjectUnderTest(){ + repositoryModifyListener = new GitRepositoryModifyTestListener(); + } + + /** + * Tests happy path. + */ + @Test + public void testHandleEvent() { + Repository old = RepositoryTestData.createHeartOfGold("git"); + old.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "master"); + Repository current = RepositoryTestData.createHeartOfGold("git"); + current.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "develop"); + + RepositoryModificationEvent event = new RepositoryModificationEvent(current, old, HandlerEvent.MODIFY); + repositoryModifyListener.handleEvent(event); + + assertNotNull(repositoryModifyListener.repository); + assertSame(current, repositoryModifyListener.repository); + } + + /** + * Tests with new default branch. + */ + @Test + public void testWithNewDefaultBranch() { + Repository old = RepositoryTestData.createHeartOfGold("git"); + Repository current = RepositoryTestData.createHeartOfGold("git"); + current.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "develop"); + + RepositoryModificationEvent event = new RepositoryModificationEvent(current, old, HandlerEvent.MODIFY); + repositoryModifyListener.handleEvent(event); + + assertNotNull(repositoryModifyListener.repository); + assertSame(current, repositoryModifyListener.repository); + } + + /** + * Tests with non git repositories. + */ + @Test + public void testNonGitRepository(){ + Repository old = RepositoryTestData.createHeartOfGold("hg"); + old.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "master"); + Repository current = RepositoryTestData.createHeartOfGold("hg"); + current.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "develop"); + + RepositoryModificationEvent event = new RepositoryModificationEvent(current, old, HandlerEvent.MODIFY); + repositoryModifyListener.handleEvent(event); + + assertNull(repositoryModifyListener.repository); + } + + /** + * Tests without default branch. + */ + @Test + public void testWithoutDefaultBranch(){ + Repository old = RepositoryTestData.createHeartOfGold("git"); + Repository current = RepositoryTestData.createHeartOfGold("git"); + + RepositoryModificationEvent event = new RepositoryModificationEvent(current, old, HandlerEvent.MODIFY); + repositoryModifyListener.handleEvent(event); + + assertNull(repositoryModifyListener.repository); + } + + /** + * Tests with non modify event. + */ + @Test + public void testNonModifyEvent(){ + Repository old = RepositoryTestData.createHeartOfGold("git"); + old.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "master"); + Repository current = RepositoryTestData.createHeartOfGold("git"); + current.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "develop"); + + RepositoryModificationEvent event = new RepositoryModificationEvent(current, old, HandlerEvent.CREATE); + repositoryModifyListener.handleEvent(event); + + assertNull(repositoryModifyListener.repository); + } + + /** + * Tests with non git repositories. + */ + @Test + public void testNoModification(){ + Repository old = RepositoryTestData.createHeartOfGold("git"); + old.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "master"); + Repository current = RepositoryTestData.createHeartOfGold("git"); + current.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "master"); + + RepositoryModificationEvent event = new RepositoryModificationEvent(current, old, HandlerEvent.MODIFY); + repositoryModifyListener.handleEvent(event); + + assertNull(repositoryModifyListener.repository); + } + + private static class GitRepositoryModifyTestListener extends GitRepositoryModifyListener { + + private Repository repository; + + @Override + protected void sendClearRepositoryCacheEvent(Repository repository) { + this.repository = repository; + } + + } + + +} \ No newline at end of file diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBlameCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBlameCommandTest.java index 88c9235373..d049447d7f 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBlameCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBlameCommandTest.java @@ -45,6 +45,7 @@ import static org.junit.Assert.*; //~--- JDK imports ------------------------------------------------------------ import java.io.IOException; +import sonia.scm.repository.GitConstants; /** * Unit tests for {@link GitBlameCommand}. @@ -73,7 +74,7 @@ public class GitBlameCommandTest extends AbstractGitCommandTestBase assertEquals("fcd0ef1831e4002ac43ea539f4094334c79ea9ec", result.getLine(1).getRevision()); // set default branch and test again - repository.setProperty(AbstractGitCommand.PROPERTY_DEFAULT_BRANCH, "test-branch"); + repository.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "test-branch"); result = createCommand().getBlameResult(request); assertNotNull(result); assertEquals(1, result.getTotal()); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java index d1c2f6abc9..727034b9ca 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitBrowseCommandTest.java @@ -48,6 +48,7 @@ import static org.junit.Assert.*; import java.io.IOException; import java.util.List; +import sonia.scm.repository.GitConstants; /** * Unit tests for {@link GitBrowseCommand}. @@ -80,7 +81,7 @@ public class GitBrowseCommandTest extends AbstractGitCommandTestBase assertEquals("f.txt", foList.get(3).getName()); // set default branch and fetch again - repository.setProperty(AbstractGitCommand.PROPERTY_DEFAULT_BRANCH, "test-branch"); + repository.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "test-branch"); result = createCommand().getBrowserResult(new BrowseCommandRequest()); assertNotNull(result); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitCatCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitCatCommandTest.java index 0d7d743e5a..ede6a53429 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitCatCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitCatCommandTest.java @@ -44,6 +44,7 @@ import static org.junit.Assert.*; import java.io.ByteArrayOutputStream; import java.io.IOException; +import sonia.scm.repository.GitConstants; /** * Unit tests for {@link GitCatCommand}. @@ -70,7 +71,7 @@ public class GitCatCommandTest extends AbstractGitCommandTestBase assertEquals("a\nline for blame", execute(request)); // set default branch for repository and check again - repository.setProperty(AbstractGitCommand.PROPERTY_DEFAULT_BRANCH, "test-branch"); + repository.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "test-branch"); assertEquals("a and b", execute(request)); } diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandTest.java index 640a28a598..c5af70e3a9 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitLogCommandTest.java @@ -50,6 +50,7 @@ import static org.junit.Assert.*; import java.io.IOException; import org.eclipse.jgit.api.errors.GitAPIException; +import sonia.scm.repository.GitConstants; /** * Unit tests for {@link GitLogCommand}. @@ -79,7 +80,7 @@ public class GitLogCommandTest extends AbstractGitCommandTestBase assertEquals("435df2f061add3589cb326cc64be9b9c3897ceca", result.getChangesets().get(3).getId()); // set default branch and fetch again - repository.setProperty(AbstractGitCommand.PROPERTY_DEFAULT_BRANCH, "test-branch"); + repository.setProperty(GitConstants.PROPERTY_DEFAULT_BRANCH, "test-branch"); result = createCommand().getChangesets(new LogCommandRequest());