var working = false;
for(var i =0 ; i < tr.length; i++) {
+ if (!tr[i].name.length) {
+ continue;
+ }
var ret = { };
this.model.el.append(ret);
//print(JSON.stringify(ret,null,4));
for(var i =0 ; i < tr.length; i++) {
var ret = { };
+ if (!tr[i].name.length) {
+ continue;
+ }
+
this.model.el.append(ret);
//print(JSON.stringify(ret,null,4));
if (tr[i].name == 'master') {
}
if (tr[i].name == 'release') {
release = i;
- }
+ }
+
this.model.el.set_value(ret.iter, 0, '' + tr[i].name );
this.model.el.set_value(ret.iter, 1, '' + tr[i].rev );
var rev = r.name + '..' + w.name;
this.release = r.name;
+ this.working = w.name;
// this takes some time, lets. try and dialog it..
});
msg.set_transient_for(Merger.el);
+ msg.set_modal(true);
msg.show_all();
var hist = Merger.repo.dayTree('/', false, 'rev', rev);
listeners : {
cursor_changed : function (self) {
// SEE SELECTION.CHANGED
- if (this.el.get_selection().count_selected_rows() < 1) {
- //nothing? - clea it?
- return;
- }
- var ret = {};
- var model = this.get('/changedFilesStore');
-
- var s = this.el.get_selection();
- var files = [];
- s.selected_foreach(function(model,p,iter) {
-
- files.push( model.get_value(iter, 0).value.get_string());
-
- });
+ var files = this.files();
this.get('/patchview').showDiff(files);
//var value = ''+ ret.model.get_value(ret.iter, 1).value.get_string();
//print("OUT?" + value);// id..
},
id : "changedFilesView",
pack : "add",
+ files : function() {
+ if (this.el.get_selection().count_selected_rows() < 1) {
+ //nothing? - clea it?
+ return [];
+ }
+
+ var ret = {};
+
+
+ var s = this.el.get_selection();
+ var files = [];
+ s.selected_foreach(function(model,p,iter) {
+
+ files.push( model.get_value(iter, 0).value.get_string());
+
+ });
+ return files;
+ },
init : function() {
XObject.prototype.init.call(this);
var description = new Pango.FontDescription.c_new();
items : [
{
xtype: Gtk.Button,
+ listeners : {
+ clicked : function (self) {
+
+
+ var model = this.get('/historyTreeStore');
+
+ if (model.release === false) {
+ return;
+ }
+
+
+ var files = this.get('/changedFilesView').files();
+
+ if (!files.length) {
+ return; // error.!
+ }
+ var diff = Merger.repo.diff(files, model.release, model.rev);
+
+
+ print("history?");
+
+
+ var history = Merger.repo.history(files, 1, 'rev', model.rev);
+
+ print("History" + JSON.stringify(history, null,4));
+
+ Commit = imports.Commit.Commit;
+
+ Commit.el.set_modal(true);
+ Commit.el.set_transient_for(Merger.el);
+
+ var ce = Commit.show({
+ repo : Merger.repo,
+ files : files,
+ release : model.release,
+ rev : model.rev,
+ author : history[0].changeby,
+ changed : history[0].changed_raw
+
+
+ });
+ if (ce === false ) {
+ return;
+ }
+
+
+ var diff = Merger.repo.diff(files, model.release, model.rev);
+
+
+ print(JSON.stringify(ce,null,4));
+ //.... commit!!!
+
+ imports.GitMonitor.GitMonitor.pause();
+
+
+
+ var msg = new Gtk.MessageDialog( {
+ buttons : Gtk.ButtonsType.NONE,
+ text: "Committing Changes"
+ });
+
+ msg.set_transient_for(Merger.el);
+ msg.set_modal(true);
+ msg.show_all();
+
+
+
+ try {
+
+ Merger.repo.checkout(model.release);
+
+ print("Call apply patch");
+
+ Merger.repo.applyPatch(diff);
+
+ var author = Merger.repo.parseAuthor(ce.author);
+
+ print("Add new files.");
+ // add all the files..
+ Merger.repo.add(files);
+
+ print("Commit changes.");
+ Merger.repo.commit({
+ name : author.name,
+ email : author.email,
+ author : ce.author,
+ changed : ce.changed,
+ reason : ce.message,
+ files : files
+
+ });
+
+
+ } catch (e) {
+ //message..
+ msg.hide();
+
+ var emsg = new Gtk.MessageDialog({
+ message_type: Gtk.MessageType.ERROR,
+ buttons : Gtk.ButtonsType.OK,
+ text: e.message
+ });
+ emsg.set_transient_for(Merger.el);
+ emsg.set_modal(true);
+ emsg.run();
+ emsg.destroy();
+ Merger.repo.stash(); // revert change.. - so we can go back...
+ }
+ msg.show_all();
+ msg.set_markup("Changing to previous branch");
+ Merger.repo.checkout(model.working);
+
+
+ // if gitlive was previously running warn the user that it is now paused..
+ /*
+ var cmsg = new Gtk.MessageDialog({
+ message_type: Gtk.MessageType.ERROR,
+ buttons : Gtk.ButtonsType.OK,
+ text: "Git Live is now paused "
+ });
+ cmsg.run();
+ cmsg.destroy();
+ */
+ var _t = this;
+ GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, function() {
+ imports.GitMonitor.GitMonitor.resume();
+ msg.hide();
+ msg.destroy();
+ _t.get('/historyTreeStore').loadTree();
+ _t.get('/changedFilesStore').el.clear();
+ _t.get('/patchview').showDiff(files);
+ return false; //only once.
+ });
+
+
+
+
+ }
+ },
label : "Commit diff (no merge)"
- },
- {
- xtype: Gtk.Button,
- label : "Commit diff (merge after)"
}
]
},
{
xtype: Gtk.Button,
id : "ok_button",
- label : "OK",
+ label : "Close",
pack : "add_action_widget,1"
}
]