diff --git a/editor/js/main.js b/editor/js/main.js
index bd41a2ca4..affa6315f 100644
--- a/editor/js/main.js
+++ b/editor/js/main.js
@@ -72,8 +72,9 @@
"abort-merge":"Git merge aborted",
"loaded":"Project '"+msg.project+"' loaded",
"updated":"Project '"+msg.project+"' updated",
- "pull":"Project '"+msg.project+"' reloaded"
- }[msg.action]
+ "pull":"Project '"+msg.project+"' reloaded",
+ "revert": "Project '"+msg.project+"' reloaded"
+ }[msg.action];
RED.notify(message);
RED.sidebar.info.refresh()
});
diff --git a/editor/js/ui/projectSettings.js b/editor/js/ui/projectSettings.js
index 88302f279..d495b42f6 100644
--- a/editor/js/ui/projectSettings.js
+++ b/editor/js/ui/projectSettings.js
@@ -134,6 +134,7 @@ RED.projects.settings = (function() {
},
200: function(data) {
done(null,data);
+ RED.sidebar.versionControl.refresh(true);
},
400: {
'unexpected_error': function(error) {
@@ -197,6 +198,7 @@ RED.projects.settings = (function() {
done(error,null);
},
200: function(data) {
+ RED.sidebar.versionControl.refresh(true);
done(null,data);
},
400: {
@@ -326,6 +328,7 @@ RED.projects.settings = (function() {
done(error,null);
},
200: function(data) {
+ RED.sidebar.versionControl.refresh(true);
done(null,data);
},
400: {
@@ -900,6 +903,7 @@ RED.projects.settings = (function() {
},
200: function(data) {
activeProject = data;
+ RED.sidebar.versionControl.refresh(true);
updateForm();
done();
},
diff --git a/editor/js/ui/tab-versionControl.js b/editor/js/ui/tab-versionControl.js
index 0c97ca24c..2ed577b45 100644
--- a/editor/js/ui/tab-versionControl.js
+++ b/editor/js/ui/tab-versionControl.js
@@ -39,7 +39,82 @@ RED.sidebar.versionControl = (function() {
var isMerging;
- // TODO: DRY projectSummary.js
+ function viewFileDiff(entry,state) {
+ var activeProject = RED.projects.getActiveProject();
+ var diffTarget = (state === 'staged')?"index":"tree";
+ utils.sendRequest({
+ url: "projects/"+activeProject.name+"/diff/"+diffTarget+"/"+encodeURIComponent(entry.file),
+ type: "GET",
+ responses: {
+ 0: function(error) {
+ console.log(error);
+ // done(error,null);
+ },
+ 200: function(data) {
+ if (mergeConflictNotification) {
+ mergeConflictNotification.close();
+ mergeConflictNotification = null;
+ }
+ var title;
+ if (state === 'unstaged') {
+ title = 'Unstaged changes : '+entry.file
+ } else if (state === 'staged') {
+ title = 'Staged changes : '+entry.file
+ } else {
+ title = 'Resolve conflicts : '+entry.file
+ }
+ var options = {
+ diff: data.diff,
+ title: title,
+ unmerged: state === 'unmerged',
+ project: activeProject
+ }
+ if (state == 'unstaged') {
+ options.oldRevTitle = entry.indexStatus === " "?"HEAD":"Staged";
+ options.newRevTitle = "Unstaged";
+ options.oldRev = entry.indexStatus === " "?"@":":0";
+ options.newRev = "_";
+ } else if (state === 'staged') {
+ options.oldRevTitle = "HEAD";
+ options.newRevTitle = "Staged";
+ options.oldRev = "@";
+ options.newRev = ":0";
+ } else {
+ options.onresolve = function(resolution) {
+ utils.sendRequest({
+ url: "projects/"+activeProject.name+"/resolve/"+encodeURIComponent(entry.file),
+ type: "POST",
+ responses: {
+ 0: function(error) {
+ console.log(error);
+ // done(error,null);
+ },
+ 200: function(data) {
+ refresh(true);
+ },
+ 400: {
+ 'unexpected_error': function(error) {
+ console.log(error);
+ // done(error,null);
+ }
+ },
+ }
+ },{resolutions:resolution.resolutions[entry.file]});
+ }
+ }
+ options.oncancel = showMergeConflictNotification;
+ RED.diff.showUnifiedDiff(options);
+ // console.log(data.diff);
+ },
+ 400: {
+ 'unexpected_error': function(error) {
+ console.log(error);
+ // done(error,null);
+ }
+ }
+ }
+ })
+ }
function createChangeEntry(row, entry, status, state) {
row.addClass("sidebar-version-control-change-entry");
@@ -52,88 +127,67 @@ RED.sidebar.versionControl = (function() {
var icon = $('').appendTo(container);
- var label = $('').appendTo(container);
+ var entryLink = $('')
+ .appendTo(container)
+ .click(function(e) {
+ e.preventDefault();
+ viewFileDiff(entry,state);
+ });
+ var label = $('').appendTo(entryLink);
- var bg = $('').appendTo(row);
- var viewDiffButton = $('')
- .appendTo(bg)
- .click(function(evt) {
- evt.preventDefault();
- var activeProject = RED.projects.getActiveProject();
- var diffTarget = (state === 'staged')?"index":"tree";
- utils.sendRequest({
- url: "projects/"+activeProject.name+"/diff/"+diffTarget+"/"+encodeURIComponent(entry.file),
- type: "GET",
- responses: {
- 0: function(error) {
- console.log(error);
- // done(error,null);
- },
- 200: function(data) {
- if (mergeConflictNotification) {
- mergeConflictNotification.close();
- mergeConflictNotification = null;
- }
- var title;
- if (state === 'unstaged') {
- title = 'Unstaged changes : '+entry.file
- } else if (state === 'staged') {
- title = 'Staged changes : '+entry.file
- } else {
- title = 'Resolve conflicts : '+entry.file
- }
- var options = {
- diff: data.diff,
- title: title,
- unmerged: state === 'unmerged',
- project: activeProject
- }
- if (state == 'unstaged') {
- options.oldRevTitle = entry.indexStatus === " "?"HEAD":"Staged";
- options.newRevTitle = "Unstaged";
- options.oldRev = entry.indexStatus === " "?"@":":0";
- options.newRev = "_";
- } else if (state === 'staged') {
- options.oldRevTitle = "HEAD";
- options.newRevTitle = "Staged";
- options.oldRev = "@";
- options.newRev = ":0";
- } else {
- options.onresolve = function(resolution) {
- utils.sendRequest({
- url: "projects/"+activeProject.name+"/resolve/"+encodeURIComponent(entry.file),
- type: "POST",
+ var entryTools = $('