Skip to content

Commit 8b02e1e

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 f2f9578 commit 8b02e1e

File tree

7 files changed

+60
-3
lines changed

7 files changed

+60
-3
lines changed

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

+7
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public static interface AtomicTransactionFactory {
9595
// when commit occurs
9696
private String commitMessagePattern = "[message]";
9797
private List<File> filesModifiedByLastReload;
98+
private boolean includeUserConfig = true;
9899
private List<String> manualSynchronizationIncludes;
99100

100101
public ScmSyncConfigurationPlugin(){
@@ -145,6 +146,7 @@ public void loadData(ScmSyncConfigurationPOJO pojo){
145146
this.displayStatus = pojo.isDisplayStatus();
146147
this.commitMessagePattern = pojo.getCommitMessagePattern();
147148
this.manualSynchronizationIncludes = pojo.getManualSynchronizationIncludes();
149+
this.includeUserConfig = pojo.isIncludeUserConfig();
148150
}
149151

150152
public void init() {
@@ -173,6 +175,7 @@ public void configure(StaplerRequest req, JSONObject formData)
173175
this.noUserCommitMessage = formData.getBoolean("noUserCommitMessage");
174176
this.displayStatus = formData.getBoolean("displayStatus");
175177
this.commitMessagePattern = req.getParameter("commitMessagePattern");
178+
this.includeUserConfig = formData.getBoolean("includeUserConfig");
176179

177180
String oldScmRepositoryUrl = this.scmRepositoryUrl;
178181
String scmType = req.getParameter("scm");
@@ -355,6 +358,10 @@ public boolean isDisplayStatus() {
355358
return displayStatus;
356359
}
357360

361+
public boolean isIncludeUserConfig() {
362+
return includeUserConfig;
363+
}
364+
358365
public String getCommitMessagePattern() {
359366
return commitMessagePattern;
360367
}

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

+20
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
import hudson.model.Job;
66
import hudson.model.Saveable;
77
import hudson.model.User;
8+
import hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin;
89
import hudson.plugins.scm_sync_configuration.model.MessageWeight;
910
import hudson.plugins.scm_sync_configuration.model.WeightedMessage;
1011
import hudson.plugins.scm_sync_configuration.strategies.AbstractScmSyncStrategy;
1112
import hudson.plugins.scm_sync_configuration.strategies.model.ClassAndFileConfigurationEntityMatcher;
1213
import hudson.plugins.scm_sync_configuration.strategies.model.ConfigurationEntityMatcher;
1314
import hudson.plugins.scm_sync_configuration.strategies.model.PageMatcher;
1415

16+
import java.io.File;
1517
import java.util.ArrayList;
1618
import java.util.List;
1719

@@ -32,6 +34,24 @@ public UserConfigScmSyncStrategy(){
3234
super(CONFIG_ENTITY_MANAGER, PAGE_MATCHERS);
3335
}
3436

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

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

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

87+
writer.startNode(AbstractMigrator.SCM_INCLUDE_USERCONFIG);
88+
writer.setValue(Boolean.toString(plugin.isIncludeUserConfig()));
89+
writer.endNode();
90+
8791
if(plugin.getManualSynchronizationIncludes() != null){
8892
writer.startNode(AbstractMigrator.SCM_MANUAL_INCLUDES);
8993
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

+10-1
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,7 +47,15 @@ public void setCommitMessagePattern(String commitMessagePattern) {
4647
this.commitMessagePattern = commitMessagePattern;
4748
}
4849

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

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)