diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projects.js b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projects.js
index da54a81c8..db9e8450c 100755
--- a/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projects.js
+++ b/packages/node_modules/@node-red/editor-client/src/js/ui/projects/projects.js
@@ -2087,6 +2087,8 @@ RED.projects = (function() {
var branchFilterTerm = "";
var branchFilterCreateItem;
var branches = [];
+ var branchNames = new Set();
+ var remotes = [];
var branchPrefix = "";
var container = $('
').appendTo(options.container);
@@ -2094,18 +2096,30 @@ RED.projects = (function() {
delay: 200,
change: function() {
branchFilterTerm = $(this).val();
- if (/(\.\.|\/\.|[?*[~^: \\]|\/\/|\/.$|\/$)/.test(branchFilterTerm)) {
+ // if there is a / then
+ // - check what preceeds it is a known remote
+
+ var valid = false;
+ var hasRemote = false;
+ var m = /^([^/]+)\/[^/.~*?\[]/.exec(branchFilterTerm);
+ if (m && remotes.indexOf(m[1]) > -1) {
+ valid = true;
+ hasRemote = true;
+ }
+
+ if (!valid && /(\.\.|\/\.|[?*[~^: \\]|\/\/|\/.$|\/$)/.test(branchFilterTerm)) {
if (!branchFilterCreateItem.hasClass("input-error")) {
branchFilterCreateItem.addClass("input-error");
branchFilterCreateItem.find("i").addClass("fa-warning").removeClass("fa-code-fork");
}
- branchFilterCreateItem.find("span").text(RED._("projects.create-branch-list.invalid")+": "+branchPrefix+branchFilterTerm);
+ branchFilterCreateItem.find("span").text(RED._("projects.create-branch-list.invalid")+": "+(hasRemote?"":branchPrefix)+branchFilterTerm);
} else {
if (branchFilterCreateItem.hasClass("input-error")) {
branchFilterCreateItem.removeClass("input-error");
branchFilterCreateItem.find("i").removeClass("fa-warning").addClass("fa-code-fork");
}
- branchFilterCreateItem.find(".red-ui-sidebar-vc-branch-list-entry-create-name").text(branchPrefix+branchFilterTerm);
+ branchFilterCreateItem.find("span").text(RED._("projects.create-branch-list.create")+":");
+ branchFilterCreateItem.find(".red-ui-sidebar-vc-branch-list-entry-create-name").text((hasRemote?"":branchPrefix)+branchFilterTerm);
}
branchList.editableList("filter");
}
@@ -2138,8 +2152,12 @@ RED.projects = (function() {
if (!entry.hasOwnProperty('commit')) {
body.name = branchFilter.val();
body.create = true;
- if (options.remote) {
- body.name = options.remote()+"/"+body.name;
+
+ if (options.remotes) {
+ var m = /^([^/]+)\/[^/.~*?\[]/.exec(body.name);
+ if (!m || remotes.indexOf(m[1]) === -1) {
+ body.name = remotes[0]+"/"+body.name;
+ }
}
} else {
if ($(this).hasClass('selected')) {
@@ -2154,11 +2172,17 @@ RED.projects = (function() {
},
filter: function(data) {
var isCreateEntry = (!data.hasOwnProperty('commit'));
+ var filterTerm = branchFilterTerm;
+ if (remotes.length > 0) {
+ var m = /^([^/]+)\/[^/.~*?\[]/.exec(filterTerm);
+ if (filterTerm !== "" && (!m || remotes.indexOf(m[1]) == -1)) {
+ filterTerm = remotes[0]+"/"+filterTerm;
+ }
+ }
return (
isCreateEntry &&
(
- branchFilterTerm !== "" &&
- branches.indexOf(branchPrefix+branchFilterTerm) === -1
+ filterTerm !== "" && !branchNames.has(filterTerm)
)
) ||
(
@@ -2173,12 +2197,14 @@ RED.projects = (function() {
branchList.editableList('empty');
var start = Date.now();
var spinner = addSpinnerOverlay(container).addClass("red-ui-component-spinner-contain");
- if (options.remote) {
- branchPrefix = options.remote()+"/";
+ if (options.remotes) {
+ remotes = options.remotes();
+ branchPrefix = remotes[0]+"/";
} else {
branchPrefix = "";
+ remotes = [];
}
-
+ branchNames = new Set();
sendRequest({
url: url,
type: "GET",
@@ -2190,6 +2216,7 @@ RED.projects = (function() {
branches = result.branches;
result.branches.forEach(function(b) {
branchList.editableList('addItem',b);
+ branchNames.add(b.name);
});
branchList.editableList('addItem',{});
setTimeout(function() {
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 e367e9c95..7d20fe094 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
@@ -830,10 +830,9 @@ RED.sidebar.versionControl = (function() {
var remoteBranchList = utils.createBranchList({
placeholder: RED._("sidebar.project.versionControl.createRemoteBranchPlaceholder"),
currentLabel: RED._("sidebar.project.versionControl.upstream"),
- remote: function() {
+ remotes: function() {
var project = RED.projects.getActiveProject();
- var remotes = Object.keys(project.git.remotes);
- return remotes[0];
+ return Object.keys(project.git.remotes);
},
container: remoteBranchSubRow,
onselect: function(body) {