Skip to content

Commit ed7119b

Browse files
committed
Add includeUserConfig option
When users are mostly managed through LDAP (or more precisely Active Directory) there may be a lot of activity due to changes of the list of groups to which someone belongs (often just changing the order). Moreover, this is not useful, since the info is just always replaced with what's in AD.
1 parent 16e5593 commit ed7119b

File tree

7 files changed

+59
-2
lines changed

7 files changed

+59
-2
lines changed

src/main/java/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin.java

+7
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ public static interface AtomicTransactionFactory {
113113
// when commit occurs
114114
private String commitMessagePattern = "[message]";
115115
private List<File> filesModifiedByLastReload;
116+
private boolean includeUserConfig = true;
116117
private List<String> manualSynchronizationIncludes;
117118

118119
public ScmSyncConfigurationPlugin(){
@@ -165,6 +166,7 @@ public void loadData(ScmSyncConfigurationPOJO pojo){
165166
this.commitMessagePattern = pojo.getCommitMessagePattern();
166167
this.manualSynchronizationIncludes = pojo.getManualSynchronizationIncludes();
167168
this.business.setManualSynchronizationIncludes(manualSynchronizationIncludes);
169+
this.includeUserConfig = pojo.isIncludeUserConfig();
168170
}
169171

170172
protected void initialInit() throws Exception {
@@ -201,6 +203,7 @@ public void configure(StaplerRequest req, JSONObject formData)
201203
this.noUserCommitMessage = formData.getBoolean("noUserCommitMessage");
202204
this.displayStatus = formData.getBoolean("displayStatus");
203205
this.commitMessagePattern = req.getParameter("commitMessagePattern");
206+
this.includeUserConfig = formData.getBoolean("includeUserConfig");
204207

205208
String oldScmRepositoryUrl = this.scmRepositoryUrl;
206209
String scmType = req.getParameter("scm");
@@ -432,6 +435,10 @@ public boolean isDisplayStatus() {
432435
return displayStatus;
433436
}
434437

438+
public boolean isIncludeUserConfig() {
439+
return includeUserConfig;
440+
}
441+
435442
public String getCommitMessagePattern() {
436443
return commitMessagePattern;
437444
}

src/main/java/hudson/plugins/scm_sync_configuration/strategies/impl/UserConfigScmSyncStrategy.java

+20
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
import hudson.model.Item;
55
import hudson.model.Saveable;
66
import hudson.model.User;
7+
import hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin;
78
import hudson.plugins.scm_sync_configuration.model.MessageWeight;
89
import hudson.plugins.scm_sync_configuration.model.WeightedMessage;
910
import hudson.plugins.scm_sync_configuration.strategies.AbstractScmSyncStrategy;
1011
import hudson.plugins.scm_sync_configuration.strategies.model.ClassAndFileConfigurationEntityMatcher;
1112
import hudson.plugins.scm_sync_configuration.strategies.model.ConfigurationEntityMatcher;
1213
import hudson.plugins.scm_sync_configuration.strategies.model.PageMatcher;
1314

15+
import java.io.File;
1416
import java.util.List;
1517

1618
import com.google.common.collect.ImmutableList;
@@ -34,6 +36,24 @@ public UserConfigScmSyncStrategy(){
3436
super(CONFIG_ENTITY_MATCHER, PAGE_MATCHERS);
3537
}
3638

39+
@Override
40+
public boolean isSaveableApplicable(Saveable saveable, File file) {
41+
if(!ScmSyncConfigurationPlugin.getInstance().isIncludeUserConfig()){
42+
return false;
43+
} else {
44+
return super.isSaveableApplicable(saveable, file);
45+
}
46+
}
47+
48+
@Override
49+
public boolean isCurrentUrlApplicable(String url) {
50+
if(!ScmSyncConfigurationPlugin.getInstance().isIncludeUserConfig()){
51+
return false;
52+
} else {
53+
return super.isCurrentUrlApplicable(url);
54+
}
55+
}
56+
3757
@Override
3858
public CommitMessageFactory getCommitMessageFactory(){
3959
return new CommitMessageFactory(){

src/main/java/hudson/plugins/scm_sync_configuration/xstream/ScmSyncConfigurationXStreamConverter.java

+4
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ public void marshal(Object source, HierarchicalStreamWriter writer,
8585
writer.endNode();
8686
}
8787

88+
writer.startNode(AbstractMigrator.SCM_INCLUDE_USERCONFIG);
89+
writer.setValue(Boolean.toString(plugin.isIncludeUserConfig()));
90+
writer.endNode();
91+
8892
if(plugin.getManualSynchronizationIncludes() != null){
8993
writer.startNode(AbstractMigrator.SCM_MANUAL_INCLUDES);
9094
for(String include : plugin.getManualSynchronizationIncludes()){

src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/AbstractMigrator.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public abstract class AbstractMigrator<TFROM extends ScmSyncConfigurationPOJO, T
1717
public static final String SCM_NO_USER_COMMIT_MESSAGE = "noUserCommitMessage";
1818
public static final String SCM_DISPLAY_STATUS = "displayStatus";
1919
public static final String SCM_COMMIT_MESSAGE_PATTERN = "commitMessagePattern";
20+
public static final String SCM_INCLUDE_USERCONFIG = "includeUserConfig";
2021
public static final String SCM_MANUAL_INCLUDES = "manualSynchronizationIncludes";
2122

2223
private static final Logger LOGGER = Logger.getLogger(AbstractMigrator.class.getName());
@@ -41,6 +42,7 @@ public TTO readScmSyncConfigurationPOJO(
4142
boolean noUserCommitMessage = false;
4243
boolean displayStatus = true;
4344
String commitMessagePattern = "[message]";
45+
boolean includeUserConfig = true;
4446
List<String> manualIncludes = null;
4547

4648
while(reader.hasMoreChildren()){
@@ -56,6 +58,8 @@ public TTO readScmSyncConfigurationPOJO(
5658
scmContent = reader.getValue();
5759
} else if(SCM_COMMIT_MESSAGE_PATTERN.equals(reader.getNodeName())){
5860
commitMessagePattern = reader.getValue();
61+
} else if(SCM_INCLUDE_USERCONFIG.equals(reader.getNodeName())){
62+
includeUserConfig = Boolean.parseBoolean(reader.getValue());
5963
} else if(SCM_MANUAL_INCLUDES.equals(reader.getNodeName())){
6064
manualIncludes = new ArrayList<String>();
6165
while(reader.hasMoreChildren()){
@@ -71,14 +75,15 @@ public TTO readScmSyncConfigurationPOJO(
7175
}
7276
reader.moveUp();
7377
}
74-
78+
7579
pojo.setScm(createSCMFrom(scmClassAttribute, scmContent));
7680
pojo.setScmRepositoryUrl(scmRepositoryUrl);
7781
pojo.setNoUserCommitMessage(noUserCommitMessage);
7882
pojo.setDisplayStatus(displayStatus);
7983
pojo.setCommitMessagePattern(commitMessagePattern);
8084
pojo.setManualSynchronizationIncludes(manualIncludes);
81-
85+
pojo.setIncludeUserConfig(includeUserConfig);
86+
8287
return pojo;
8388
}
8489

src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/DefaultSSCPOJO.java

+9
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class DefaultSSCPOJO implements ScmSyncConfigurationPOJO {
1111
private boolean noUserCommitMessage;
1212
private boolean displayStatus;
1313
private String commitMessagePattern;
14+
private boolean includeUserConfig;
1415
private List<String> manualSynchronizationIncludes;
1516

1617
public String getScmRepositoryUrl() {
@@ -46,6 +47,14 @@ public void setCommitMessagePattern(String commitMessagePattern) {
4647
this.commitMessagePattern = commitMessagePattern;
4748
}
4849

50+
public boolean isIncludeUserConfig() {
51+
return includeUserConfig;
52+
}
53+
54+
public void setIncludeUserConfig(boolean includeUserConfig) {
55+
this.includeUserConfig = includeUserConfig;
56+
}
57+
4958
public void setManualSynchronizationIncludes(List<String> _manualSynchronizationIncludes){
5059
this.manualSynchronizationIncludes = _manualSynchronizationIncludes;
5160
}

src/main/java/hudson/plugins/scm_sync_configuration/xstream/migration/ScmSyncConfigurationPOJO.java

+2
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,6 @@ public interface ScmSyncConfigurationPOJO {
2121
public void setCommitMessagePattern(String commitMessagePattern);
2222
public List<String> getManualSynchronizationIncludes();
2323
public void setManualSynchronizationIncludes(List<String> manualSynchronizationIncludes);
24+
public boolean isIncludeUserConfig();
25+
public void setIncludeUserConfig(boolean includeUserConfig);
2426
}

src/main/resources/hudson/plugins/scm_sync_configuration/ScmSyncConfigurationPlugin/config.jelly

+10
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@
3434
<f:textbox name="commitMessagePattern" value="${it.commitMessagePattern}" />
3535
</f:entry>
3636

37+
<f:entry title="${%Include user config}">
38+
<j:choose>
39+
<j:when test="${it.includeUserConfig}">
40+
<f:checkbox name="includeUserConfig" checked="${it.includeUserConfig}" value="true" />
41+
</j:when>
42+
<j:otherwise>
43+
<f:checkbox name="includeUserConfig" value="true" />
44+
</j:otherwise>
45+
</j:choose>
46+
</f:entry>
3747
<!--
3848
Help url for manualSynchronizationIncludes field is a jelly script and not a html file
3949
because we need default includes list to be displayed in it !

0 commit comments

Comments
 (0)