Merge remote-tracking branch 'origin/develop' into feature/browse_commit_with_limit

# Conflicts:
#	CHANGELOG.md
This commit is contained in:
René Pfeuffer
2020-03-10 09:43:31 +01:00
6 changed files with 74 additions and 37 deletions

10
.gitignore vendored
View File

@@ -19,3 +19,13 @@ Desktop DF
.project
.classpath
.settings
# idea files
*.iml
.idea
# ui
scm-ui/build
scm-ui/coverage
node_modules
# jrebel
rebel.xml
*.pyc

View File

@@ -1,36 +0,0 @@
# netbeans temp & private files
/?target/
nbactions.*\.xml
/?nbproject/
nb-configuration\.xml
# MacOS X Files
\.DS_Store$
\._\.DS_Store$
\._\.
Desktop DB$
Desktop DF$
\.hotfiles\.btree$
\.orig$
~$
\.\~.*$
\.bak$
.*\.NavData$
\.orig\..*$
\.chg\..*$
\.rej$
\.conflict\~$
# Eclipse Files
\.project
\.classpath
\.settings
# idea files
\.iml
\.idea$
# jrebel
rebel.xml
\.pyc
# ui
scm-ui/build
scm-ui/coverage
/?node_modules/

View File

@@ -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
- By default, only 100 files will be listed in source view in one request
### Changed

2
Jenkinsfile vendored
View File

@@ -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.trustfolderstat=false'
}
stage('SonarQube') {

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

View File

@@ -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");
}
}