diff --git a/CHANGELOG.md b/CHANGELOG.md index b10bba8e94..5fa1f5ff79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - New footer design +- Update jgit to version 5.6.1.202002131546-r-scm1 - Update svnkit to version 1.10.1-scm1 ### Fixed diff --git a/pom.xml b/pom.xml index a472742c11..39f604ca3c 100644 --- a/pom.xml +++ b/pom.xml @@ -855,7 +855,7 @@ 1.4.1 - v5.4.0.201906121030-r-scm2 + 5.6.1.202002131546-r-scm1 1.10.1-scm1 diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLfsFilterContextListener.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLfsFilterContextListener.java index c202874781..f116bcc550 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLfsFilterContextListener.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/repository/spi/GitLfsFilterContextListener.java @@ -4,54 +4,34 @@ import com.google.common.io.ByteStreams; import org.eclipse.jgit.attributes.FilterCommand; import org.eclipse.jgit.attributes.FilterCommandRegistry; import org.eclipse.jgit.lib.Repository; -import org.eclipse.jgit.util.FS; +import org.eclipse.jgit.util.SystemReader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import sonia.scm.SCMContextProvider; import sonia.scm.plugin.Extension; -import javax.inject.Inject; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.regex.Pattern; -import static java.nio.file.StandardOpenOption.CREATE; -import static java.nio.file.StandardOpenOption.TRUNCATE_EXISTING; - @Extension public class GitLfsFilterContextListener implements ServletContextListener { - public static final String GITCONFIG = "[filter \"lfs\"]\n" + - "clean = git-lfs clean -- %f\n" + - "smudge = git-lfs smudge -- %f\n" + - "process = git-lfs filter-process\n" + - "required = true\n"; public static final Pattern COMMAND_NAME_PATTERN = Pattern.compile("git-lfs (smudge|clean) -- .*"); private static final Logger LOG = LoggerFactory.getLogger(GitLfsFilterContextListener.class); - private final SCMContextProvider contextProvider; - - @Inject - public GitLfsFilterContextListener(SCMContextProvider contextProvider) { - this.contextProvider = contextProvider; - } - @Override public void contextInitialized(ServletContextEvent sce) { - Path gitconfig = contextProvider.getBaseDirectory().toPath().resolve("gitconfig"); try { - Files.write(gitconfig, GITCONFIG.getBytes(Charset.defaultCharset()), TRUNCATE_EXISTING, CREATE); - FS.DETECTED.setGitSystemConfig(gitconfig.toFile()); - LOG.info("wrote git config file: {}", gitconfig); - } catch (IOException e) { - LOG.error("could not write git config in path {}; git lfs support may not work correctly", gitconfig, e); + SystemReader.getInstance().getSystemConfig().setString("filter", "lfs", "clean", "git-lfs clean -- %f"); + SystemReader.getInstance().getSystemConfig().setString("filter", "lfs", "smudge", "git-lfs smudge -- %f"); + SystemReader.getInstance().getSystemConfig().setString("filter", "lfs", "process", "git-lfs filter-process"); + SystemReader.getInstance().getSystemConfig().setString("filter", "lfs", "required", "true"); + } catch (Exception e) { + LOG.error("could not set git config; git lfs support may not work correctly", e); } FilterCommandRegistry.register(COMMAND_NAME_PATTERN, NoOpFilterCommand::new); } diff --git a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/CollectingPackParserListener.java b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/CollectingPackParserListener.java index fdb96d18d7..20873b3229 100644 --- a/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/CollectingPackParserListener.java +++ b/scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/CollectingPackParserListener.java @@ -39,8 +39,8 @@ import com.google.common.collect.ImmutableSet; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectIdSubclassMap; import org.eclipse.jgit.revwalk.RevObject; -import org.eclipse.jgit.transport.BaseReceivePack; -import org.eclipse.jgit.transport.BaseReceivePack.PackParserListener; +import org.eclipse.jgit.transport.ReceivePack; +import org.eclipse.jgit.transport.ReceivePack.PackParserListener; import org.eclipse.jgit.transport.PackParser; import org.slf4j.Logger; @@ -76,7 +76,7 @@ public class CollectingPackParserListener implements PackParserListener * * @return listener */ - public static CollectingPackParserListener get(BaseReceivePack pack) + public static CollectingPackParserListener get(ReceivePack pack) { PackParserListener listener = pack.getPackParserListener(); @@ -101,7 +101,7 @@ public class CollectingPackParserListener implements PackParserListener * * @param pack receive pack */ - public static void set(BaseReceivePack pack) + public static void set(ReceivePack pack) { logger.trace("apply collecting listener to receive pack"); pack.setPackParserListener(new CollectingPackParserListener()); diff --git a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommand_LFSTest.java b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommand_LFSTest.java index b1a5c7bbcc..90c4985d35 100644 --- a/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommand_LFSTest.java +++ b/scm-plugins/scm-git-plugin/src/test/java/sonia/scm/repository/spi/GitModifyCommand_LFSTest.java @@ -5,8 +5,8 @@ import com.github.sdorra.shiro.SubjectAware; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.revwalk.RevCommit; -import org.junit.After; -import org.junit.Before; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; @@ -38,14 +38,14 @@ public class GitModifyCommand_LFSTest extends AbstractGitCommandTestBase { private final LfsBlobStoreFactory lfsBlobStoreFactory = mock(LfsBlobStoreFactory.class); - @Before - public void registerFilter() { - new GitLfsFilterContextListener(contextProvider).contextInitialized(null); + @BeforeClass + public static void registerFilter() { + new GitLfsFilterContextListener().contextInitialized(null); } - @After - public void unregisterFilter() { - new GitLfsFilterContextListener(contextProvider).contextDestroyed(null); + @AfterClass + public static void unregisterFilter() { + new GitLfsFilterContextListener().contextDestroyed(null); } @Test