/** * 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 sidebarContent; var sections; var allChanges = {}; var unstagedChangesList; var stageAllButton; var stagedChangesList; var unstageAllButton; var unstagedChanges; var stagedChanges; var bulkChangeSpinner; var unmergedContent; var unmergedChangesList; var commitButton; var mergeConflictNotification; var localChanges; var localCommitList; var localCommitListShade; // var remoteCommitList; var isMerging; 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"); var container = $('