}
return _GitRepo;
}
-
+
/**
* index of.. matching gitpath..
*/
{
// in theory we should check to see if other repo's have got the same branch and merge all them at the same time.
// also need to decide which branch we will merge into?
- var ret = "";
- if (action == "CLOSE" || action == "LEAVE") {
-
-
- try {
- var oldbranch = this.currentBranch.name;
- this.setActiveTicket(null, "master");
- string [] cmd = { "merge", "--squash", oldbranch };
- this.git( cmd );
- cmd = { "commit", "--m", commit_message };
- this.git( cmd );
- this.loadBranches(); // updates lastrev..
-
- var notification = new Notify.Notification(
- "Merged branch %s to master".printf(oldbranch),
- "",
- "dialog-information"
-
- );
-
- notification.set_timeout(5);
- notification.show();
-
- // close ticket..
- return true;
-
- } catch (Error e) {
+ var ret = "";
+ if (action == "CLOSE" || action == "LEAVE") {
+
+ try {
+ var oldbranch = this.currentBranch.name;
+ this.setActiveTicket(null, "master");
+ string [] cmd = { "merge", "--squash", oldbranch };
+ this.git( cmd );
+ cmd = { "commit", "-a" , "-m", commit_message };
+ this.git( cmd );
+ this.push();
+ this.loadBranches(); // updates lastrev..
+
+ var notification = new Notify.Notification(
+ "Merged branch %s to master".printf(oldbranch),
+ "",
+ "dialog-information"
+
+ );
- GitMonitor.gitmonitor.pauseError(e.message);
- return false;
- }
- // error~?? -- show the error dialog...
+ notification.set_timeout(5);
+ notification.show();
+
+ // close ticket..
+ return true;
+
+ } catch (Error e) {
+
+ GitMonitor.gitmonitor.pauseError(e.message);
+ return false;
+ }
+ // error~?? -- show the error dialog...
return false;
}
if (action == "MASTER") {
}
- public bool setActiveTicket(RooTicket ticket, string branchname)
+ public bool setActiveTicket(RooTicket ticket, string branchname)
{
if (!this.createBranchNamed(branchname)) {
return false;
}
public bool createBranchNamed(string branchname)
- {
-
- try {
+ {
+
+ var stash = false;
if (this.branches.has_key(branchname)) {
- string[] cmd = { "checkout", branchname };
- this.git(cmd);
+ // this is where it get's tricky...
+ try {
+ string[] cmd = { "ls-files" , "-m" }; // list the modified files..
+ var ret = this.git(cmd);
+ stash = ret.length> 1 ;
+
+
+ cmd = { "stash" };
+ if (stash) { this.git(cmd); }
+
+ cmd = { "checkout", branchname };
+ this.git(cmd);
+ } catch(Error e) {
+ GitMonitor.gitmonitor.pauseError(e.message);
+ return false;
+
+ }
+ try {
+ if (branchname != "master") {
+ string[] cmd = { "merge", "master" };
+ this.git(cmd);
+ }
+ } catch(Error e) {
+ string[] cmd = { "checkout", "master" };
+ this.git(cmd);
+ GitMonitor.gitmonitor.pauseError(
+ "Use\n\na) git checkout %s\nb) git mergetool\nc) git commit\nd) git push\n d) stash pop \ne) start gitlive again\n".printf(
+ branchname)
+ + e.message
+ );
+ return false;
+
+ }
+ try {
+ string[] cmd = { "stash", "pop" };
+ if (stash) { this.git(cmd); }
+ } catch(Error ee) {
+ GitMonitor.gitmonitor.pauseError(ee.message);
+ return false;
+ }
+ this.push();
+
} else {
- string[] cmd = { "checkout", "-b" , branchname };
- this.git(cmd);
+ try {
+
+ string[] cmd = { "checkout", "-b" , branchname };
+ this.git(cmd);
+
+ this.push();
+ } catch(Error ee) {
+ GitMonitor.gitmonitor.pauseError(ee.message);
+ return false;
+ }
+
}
var notification = new Notify.Notification(
"Changed to branch %s".printf(branchname),
notification.set_timeout(5);
notification.show();
-
- } catch(Error e) {
- GitMonitor.gitmonitor.pauseError(e.message);
- return false;
-
- }
+
this.loadBranches(); // update branch list...
GitMonitor.gitmonitor.runQueue(); // commit any outstanding...
return true;
public string push () throws Error, SpawnError
{
// should
- return this.git({ "push", "origin", "HEAD" });
+ return this.git({ "push", "--all" });
}