mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-03 12:05:52 +01:00
Merge remote-tracking branch 'origin/develop' into feature/browse_commit_with_limit
# Conflicts: # CHANGELOG.md
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import org.eclipse.jgit.util.SystemReader;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import sonia.scm.plugin.Extension;
|
||||
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import javax.servlet.ServletContextListener;
|
||||
import java.util.Map;
|
||||
|
||||
@Extension
|
||||
public class GitConfigContextListener implements ServletContextListener {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(GitConfigContextListener.class);
|
||||
private static final String SCM_JGIT_CORE = "scm.git.core.";
|
||||
|
||||
@Override
|
||||
public void contextInitialized(ServletContextEvent sce) {
|
||||
System.getProperties()
|
||||
.entrySet().stream()
|
||||
.filter(e -> e.getKey().toString().startsWith(SCM_JGIT_CORE))
|
||||
.forEach(this::setConfig);
|
||||
}
|
||||
|
||||
private void setConfig(Map.Entry<Object, Object> property) {
|
||||
String key = property.getKey().toString().substring(SCM_JGIT_CORE.length());
|
||||
String value = property.getValue().toString();
|
||||
try {
|
||||
SystemReader.getInstance().getSystemConfig().setString("core", null, key, value);
|
||||
LOG.info("set git config core.{} = {}", key,value);
|
||||
} catch (Exception e) {
|
||||
LOG.error("could not set git config core.{} = {}", key,value, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void contextDestroyed(ServletContextEvent sce) {
|
||||
// nothing to do
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package sonia.scm.repository.spi;
|
||||
|
||||
import org.eclipse.jgit.errors.ConfigInvalidException;
|
||||
import org.eclipse.jgit.util.SystemReader;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class GitConfigContextListenerTest {
|
||||
|
||||
@Test
|
||||
void shouldSetGitConfig() throws IOException, ConfigInvalidException {
|
||||
System.setProperty("scm.git.core.someTestKey", "testValue");
|
||||
new GitConfigContextListener().contextInitialized(null);
|
||||
assertThat(
|
||||
SystemReader.getInstance().getSystemConfig().getString("core", null, "someTestKey")
|
||||
).isEqualTo("testValue");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user