diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java b/src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java index b4612674..49c36c23 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java @@ -113,6 +113,7 @@ public static interface AtomicTransactionFactory { // when commit occurs private String commitMessagePattern = "[message]"; private List filesModifiedByLastReload; + private boolean includeUserConfig = true; private List manualSynchronizationIncludes; public ScmSyncConfigurationPlugin(){ @@ -165,6 +166,7 @@ public void loadData(ScmSyncConfigurationPOJO pojo){ this.commitMessagePattern = pojo.getCommitMessagePattern(); this.manualSynchronizationIncludes = pojo.getManualSynchronizationIncludes(); this.business.setManualSynchronizationIncludes(manualSynchronizationIncludes); + this.includeUserConfig = pojo.isIncludeUserConfig(); } protected void initialInit() throws Exception { @@ -201,6 +203,7 @@ public void configure(StaplerRequest req, JSONObject formData) this.noUserCommitMessage = formData.getBoolean("noUserCommitMessage"); this.displayStatus = formData.getBoolean("displayStatus"); this.commitMessagePattern = req.getParameter("commitMessagePattern"); + this.includeUserConfig = formData.getBoolean("includeUserConfig"); String oldScmRepositoryUrl = this.scmRepositoryUrl; String scmType = req.getParameter("scm"); @@ -432,6 +435,10 @@ public boolean isDisplayStatus() { return displayStatus; } + public boolean isIncludeUserConfig() { + return includeUserConfig; + } + public String getCommitMessagePattern() { return commitMessagePattern; } diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java index d860ba8d..6e2450e1 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java @@ -4,6 +4,7 @@ import hudson.model.Item; import hudson.model.Saveable; import hudson.model.User; +import hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin; import hudson.plugins.scm_sync_configuration.model.MessageWeight; import hudson.plugins.scm_sync_configuration.model.WeightedMessage; import hudson.plugins.scm_sync_configuration.strategies.AbstractScmSyncStrategy; @@ -11,6 +12,7 @@ import hudson.plugins.scm_sync_configuration.strategies.model.ConfigurationEntityMatcher; import hudson.plugins.scm_sync_configuration.strategies.model.PageMatcher; +import java.io.File; import java.util.List; import com.google.common.collect.ImmutableList; @@ -34,6 +36,24 @@ public UserConfigScmSyncStrategy(){ super(CONFIG_ENTITY_MATCHER, PAGE_MATCHERS); } + @Override + public boolean isSaveableApplicable(Saveable saveable, File file) { + if(!ScmSyncConfigurationPlugin.getInstance().isIncludeUserConfig()){ + return false; + } else { + return super.isSaveableApplicable(saveable, file); + } + } + + @Override + public boolean isCurrentUrlApplicable(String url) { + if(!ScmSyncConfigurationPlugin.getInstance().isIncludeUserConfig()){ + return false; + } else { + return super.isCurrentUrlApplicable(url); + } + } + @Override public CommitMessageFactory getCommitMessageFactory(){ return new CommitMessageFactory(){ diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java index ac5b7a5f..b5bd7fe4 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java @@ -85,6 +85,10 @@ public void marshal(Object source, HierarchicalStreamWriter writer, writer.endNode(); } + writer.startNode(AbstractMigrator.SCM_INCLUDE_USERCONFIG); + writer.setValue(Boolean.toString(plugin.isIncludeUserConfig())); + writer.endNode(); + if(plugin.getManualSynchronizationIncludes() != null){ writer.startNode(AbstractMigrator.SCM_MANUAL_INCLUDES); for(String include : plugin.getManualSynchronizationIncludes()){ diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java index 408473c3..e7ef50e8 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java @@ -17,6 +17,7 @@ public abstract class AbstractMigrator manualIncludes = null; while(reader.hasMoreChildren()){ @@ -56,6 +58,8 @@ public TTO readScmSyncConfigurationPOJO( scmContent = reader.getValue(); } else if(SCM_COMMIT_MESSAGE_PATTERN.equals(reader.getNodeName())){ commitMessagePattern = reader.getValue(); + } else if(SCM_INCLUDE_USERCONFIG.equals(reader.getNodeName())){ + includeUserConfig = Boolean.parseBoolean(reader.getValue()); } else if(SCM_MANUAL_INCLUDES.equals(reader.getNodeName())){ manualIncludes = new ArrayList(); while(reader.hasMoreChildren()){ @@ -71,14 +75,15 @@ public TTO readScmSyncConfigurationPOJO( } reader.moveUp(); } - + pojo.setScm(createSCMFrom(scmClassAttribute, scmContent)); pojo.setScmRepositoryUrl(scmRepositoryUrl); pojo.setNoUserCommitMessage(noUserCommitMessage); pojo.setDisplayStatus(displayStatus); pojo.setCommitMessagePattern(commitMessagePattern); pojo.setManualSynchronizationIncludes(manualIncludes); - + pojo.setIncludeUserConfig(includeUserConfig); + return pojo; } diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java index f592157c..ca9a23f6 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java @@ -11,6 +11,7 @@ public class DefaultSSCPOJO implements ScmSyncConfigurationPOJO { private boolean noUserCommitMessage; private boolean displayStatus; private String commitMessagePattern; + private boolean includeUserConfig; private List manualSynchronizationIncludes; public String getScmRepositoryUrl() { @@ -46,6 +47,14 @@ public void setCommitMessagePattern(String commitMessagePattern) { this.commitMessagePattern = commitMessagePattern; } + public boolean isIncludeUserConfig() { + return includeUserConfig; + } + + public void setIncludeUserConfig(boolean includeUserConfig) { + this.includeUserConfig = includeUserConfig; + } + public void setManualSynchronizationIncludes(List _manualSynchronizationIncludes){ this.manualSynchronizationIncludes = _manualSynchronizationIncludes; } diff --git a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java index eea89608..a89434e5 100644 --- a/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java +++ b/src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java @@ -21,4 +21,6 @@ public interface ScmSyncConfigurationPOJO { public void setCommitMessagePattern(String commitMessagePattern); public List getManualSynchronizationIncludes(); public void setManualSynchronizationIncludes(List manualSynchronizationIncludes); + public boolean isIncludeUserConfig(); + public void setIncludeUserConfig(boolean includeUserConfig); } diff --git a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly index 043a21a3..1ac1d45d 100644 --- a/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly +++ b/src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly @@ -34,6 +34,16 @@ + + + + + + + + + +