diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectUserSettings.js b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectUserSettings.js index 31acbc1e4..7ca13a3cf 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectUserSettings.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projectUserSettings.js @@ -43,9 +43,11 @@ RED.projects.userSettings = (function() { function createWorkflowSection(pane) { + var defaultWorkflowMode = RED.settings.theme("projects.workflow.mode","manual"); + var currentGitSettings = RED.settings.get('git') || {}; currentGitSettings.workflow = currentGitSettings.workflow || {}; - currentGitSettings.workflow.mode = currentGitSettings.workflow.mode || "manual"; + currentGitSettings.workflow.mode = currentGitSettings.workflow.mode || defaultWorkflowMode; var title = $('

').text(RED._("editor:sidebar.project.userSettings.workflow")).appendTo(pane); diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/tab-versionControl.js b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/tab-versionControl.js index 8aede9c2b..5512926be 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/tab-versionControl.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/tab-versionControl.js @@ -294,7 +294,10 @@ RED.sidebar.versionControl = (function() { // TODO: this is a full refresh of the files - should be able to // just do an incremental refresh - var workflowMode = ((RED.settings.get('git') || {}).workflow || {}).mode || "manual"; + // Get the default workflow mode from theme settings + var defaultWorkflowMode = RED.settings.theme("projects.workflow.mode","manual"); + // Check for the user-defined choice of mode + var workflowMode = ((RED.settings.get('git') || {}).workflow || {}).mode || defaultWorkflowMode; if (workflowMode === 'auto') { refresh(true); } else { diff --git a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js index d87001f1f..060a71227 100644 --- a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js +++ b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/Project.js @@ -421,7 +421,7 @@ Project.prototype.update = async function (user, data) { } return Promise.all(promises).then(function(res) { var gitSettings = getUserGitSettings(user) || {}; - var workflowMode = (gitSettings.workflow||{}).mode || "manual"; + var workflowMode = (gitSettings.workflow||{}).mode || settings.editorTheme.projects.workflow.mode; if (workflowMode === 'auto') { return project.stageFile(modifiedFiles.map(f => project.paths[f])).then(() => { return project.commit(user,{message:"Update "+modifiedFiles.join(", ")}) diff --git a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js index 3bbeb823b..8ddd61232 100644 --- a/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js +++ b/packages/node_modules/@node-red/runtime/lib/storage/localfilesystem/projects/index.js @@ -34,7 +34,7 @@ var projectsEnabled = false; var projectLogMessages = []; var projectsDir; -var activeProject +var activeProject; var globalGitUser = false; @@ -106,6 +106,10 @@ function init(_settings, _runtime) { } catch(err) { } } else { + // Ensure there's a default workflow mode set + settings.editorTheme.projects.workflow = { + mode: (settings.editorTheme.projects.workflow || {}).mode || "manual" + } globalGitUser = gitConfig.user; Projects.init(settings,runtime); sshTools.init(settings); @@ -574,11 +578,13 @@ async function saveFlows(flows, user) { } return util.writeFile(flowsFullPath, flowData, flowsFileBackup).then(() => { var gitSettings = getUserGitSettings(user) || {}; - var workflowMode = (gitSettings.workflow||{}).mode || "manual"; - if (activeProject && workflowMode === 'auto') { - return activeProject.stageFile([flowsFullPath, credentialsFile]).then(() => { - return activeProject.commit(user,{message:"Update flow files"}) - }) + if (activeProject) { + var workflowMode = (gitSettings.workflow||{}).mode || settings.editorTheme.projects.workflow.mode; + if (workflowMode === 'auto') { + return activeProject.stageFile([flowsFullPath, credentialsFile]).then(() => { + return activeProject.commit(user,{message:"Update flow files"}) + }) + } } }); } diff --git a/packages/node_modules/node-red/settings.js b/packages/node_modules/node-red/settings.js index deedd726d..7d5643ecd 100644 --- a/packages/node_modules/node-red/settings.js +++ b/packages/node_modules/node-red/settings.js @@ -292,7 +292,15 @@ module.exports = { editorTheme: { projects: { // To enable the Projects feature, set this value to true - enabled: false + enabled: false, + workflow: { + // Set the default projects workflow mode. + // - manual - you must manually commit changes + // - auto - changes are automatically committed + // This can be overridden per-user from the 'Git config' + // section of 'User Settings' within the editor + mode: "manual" + } } } }