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:
René Pfeuffer
2020-03-09 15:33:58 +01:00
parent 5879249bd5
commit 2d117648ba
4 changed files with 64 additions and 1 deletions

View File

@@ -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
}
}