mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-10-26 08:06:09 +01:00
Add possibility to set jgit nfs related config
It may be necessary for users to configure jgit behaviour related to file handling. This commit makes the following two configurations available (among others): - core.trustfolderstat - core.supportsatomicfilecreation
This commit is contained in:
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Added footer extension points for links and avatar
|
||||
- Create OpenAPI specification during build
|
||||
- Extension point entries with supplied extensionName are sorted ascending
|
||||
- Possibility to configure git core config entries for jgit like core.trustfolderstat and core.supportsatomicfilecreation
|
||||
|
||||
### Changed
|
||||
- New footer design
|
||||
|
||||
2
Jenkinsfile
vendored
2
Jenkinsfile
vendored
@@ -39,7 +39,7 @@ node('docker') {
|
||||
}
|
||||
|
||||
stage('Integration Test') {
|
||||
mvn 'verify -Pit -pl :scm-webapp,:scm-it -Dmaven.test.failure.ignore=true'
|
||||
mvn 'verify -Pit -pl :scm-webapp,:scm-it -Dmaven.test.failure.ignore=true -Dscm.git.core.supportsatomicfilecreation=false'
|
||||
}
|
||||
|
||||
stage('SonarQube') {
|
||||
|
||||
@@ -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