From 81f200641b4d15dd7c0abbc19605d71b77a7798e Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Wed, 18 Nov 2020 12:02:45 +0000 Subject: [PATCH 1/3] Allow default project workflow to be set via settings --- .../src/js/ui/projects/projectUserSettings.js | 4 +++- .../src/js/ui/projects/tab-versionControl.js | 5 ++++- packages/node_modules/node-red/settings.js | 10 +++++++++- 3 files changed, 16 insertions(+), 3 deletions(-) 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/settings.js b/packages/node_modules/node-red/settings.js index fd07630f2..d13c2b195 100644 --- a/packages/node_modules/node-red/settings.js +++ b/packages/node_modules/node-red/settings.js @@ -290,7 +290,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" + } } } } From 0f7d185a61147207372e038a8fa4ea27343ab134 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Wed, 18 Nov 2020 12:23:27 +0000 Subject: [PATCH 2/3] Ensure runtime side picks up default project workflow mode --- .../lib/storage/localfilesystem/projects/Project.js | 2 +- .../runtime/lib/storage/localfilesystem/projects/index.js | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) 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 0fbf89de4..6cc98049a 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 = function (user, data) { } return when.settle(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 5e1d4f15b..2f2990e08 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 @@ -35,7 +35,7 @@ var projectsEnabled = false; var projectLogMessages = []; var projectsDir; -var activeProject +var activeProject; var globalGitUser = false; @@ -107,6 +107,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); @@ -576,7 +580,7 @@ function saveFlows(flows, user) { } return util.writeFile(flowsFullPath, flowData, flowsFileBackup).then(() => { var gitSettings = getUserGitSettings(user) || {}; - var workflowMode = (gitSettings.workflow||{}).mode || "manual"; + var workflowMode = (gitSettings.workflow||{}).mode || settings.editorTheme.projects.workflow.mode; if (activeProject && workflowMode === 'auto') { return activeProject.stageFile([flowsFullPath, credentialsFile]).then(() => { return activeProject.commit(user,{message:"Update flow files"}) From 5489bd37c96501aed944c8a54fc9f1e5038deca6 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Fri, 8 Jan 2021 15:05:34 +0000 Subject: [PATCH 3/3] Fix handling of default workflow mode when projects not active --- .../lib/storage/localfilesystem/projects/index.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) 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 2f2990e08..41d769fdd 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 @@ -580,11 +580,13 @@ function saveFlows(flows, user) { } return util.writeFile(flowsFullPath, flowData, flowsFileBackup).then(() => { var gitSettings = getUserGitSettings(user) || {}; - var workflowMode = (gitSettings.workflow||{}).mode || settings.editorTheme.projects.workflow.mode; - 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"}) + }) + } } }); }