diff --git a/Gruntfile.js b/Gruntfile.js
index 254585d7b..2cdac727c 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -155,6 +155,7 @@ module.exports = function(grunt) {
"editor/js/ui/userSettings.js",
"editor/js/ui/projects.js",
"editor/js/ui/projectSettings.js",
+ "editor/js/ui/tab-versionControl.js",
"editor/js/ui/touch/radialMenu.js"
],
dest: "public/red/red.js"
diff --git a/editor/js/keymap.json b/editor/js/keymap.json
index 5fa045ab6..4b7eb6b35 100644
--- a/editor/js/keymap.json
+++ b/editor/js/keymap.json
@@ -17,7 +17,7 @@
"ctrl-alt-n": "core:new-project",
"ctrl-alt-o": "core:open-project",
- "ctrl-g p": "core:show-projects-tab"
+ "ctrl-g v": "core:show-version-control-tab"
},
"workspace": {
"backspace": "core:delete-selection",
diff --git a/editor/js/ui/projects.js b/editor/js/ui/projects.js
index a78d094ec..4f5f1dd9f 100644
--- a/editor/js/ui/projects.js
+++ b/editor/js/ui/projects.js
@@ -482,7 +482,7 @@ RED.projects = (function() {
RED.actions.add("core:open-project",RED.projects.selectProject);
RED.projects.settings.init({sendRequest:sendRequest});
-
+ RED.sidebar.versionControl.init({sendRequest:sendRequest});
initScreens();
// initSidebar();
}
diff --git a/editor/js/ui/tab-versionControl.js b/editor/js/ui/tab-versionControl.js
new file mode 100644
index 000000000..4dc68ee3c
--- /dev/null
+++ b/editor/js/ui/tab-versionControl.js
@@ -0,0 +1,436 @@
+/**
+ * Copyright JS Foundation and other contributors, http://js.foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ **/
+RED.sidebar.versionControl = (function() {
+
+ var content;
+ var sections;
+
+ var allChanges = {};
+
+ var unstagedChangesList;
+ var stageAllButton;
+ var stagedChangesList;
+ var unstageAllButton;
+ var unstagedChanges;
+ var stagedChanges;
+ var bulkChangeSpinner;
+ var commitButton;
+
+ // TODO: DRY projectSummary.js
+ function addSpinnerOverlay(container) {
+ var spinner = $('
').appendTo(container);
+ return spinner;
+ }
+ function createChangeEntry(row, entry, status, unstaged) {
+ row.addClass("sidebar-version-control-change-entry");
+ var container = $('