}
-
+ public bool hasBranchCalled(string name)
+ {
+ foreach( var br in this.branches.values) {
+ if (br.name == name) {
+ return true;
+ }
+
+ }
+ return false;
+ }
public string branchesToString()
{
if (br.name == "") {
continue;
}
+ var col = /hours/.match(br.age) ? "#ff851b" : "#ffdc00"; // orange or yellow
ret += ret.length > 0 ? "\n" : "";
- ret += br.name;
+ ret += br.name + " <span background=\"" + col + "\">" + br.age + "</span>";
}
return ret;
}
GitMonitor.gitmonitor.start();
}
-
+
public bool doMerge(string action, string ticket_id, string commit_message)
{
// 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 master = this.hasBranchCalled("roojs") ? "roojs" : "master";
+
var ret = "";
if (action == "CLOSE" || action == "LEAVE") {
try {
var oldbranch = this.currentBranch.name;
- this.setActiveTicket(null, "master");
+ this.setActiveTicket(null, master);
string [] cmd = { "merge", "--squash", oldbranch };
this.git( cmd );
cmd = { "commit", "-a" , "-m", commit_message };
this.loadBranches(); // updates lastrev..
var notification = new Notify.Notification(
- "Merged branch %s to master".printf(oldbranch),
+ "Merged branch %s to %s".printf(oldbranch, master),
"",
"dialog-information"
if (action == "MASTER") {
// merge master into ours..
try {
- string[] cmd = { "merge", "master" };
+ string[] cmd = { "merge", master};
this.git( cmd );
var notification = new Notify.Notification(
- "Merged code from master to %s".printf(this.currentBranch.name),
+ "Merged code from %s to %s".printf(master,this.currentBranch.name),
"",
"dialog-information"
if (action == "EXIT") {
try {
var oldbranch = this.currentBranch.name;
- this.setActiveTicket(null, "master");
+ this.setActiveTicket(null, master);
this.loadBranches();
var notification = new Notify.Notification(
"Left branch %s".printf(oldbranch),
}
bool switchToExistingBranchNamed(string branchname)
{
+ var master = this.hasBranchCalled("roojs") ? "roojs" : "master";
var stash = false;
- // this is where it get's tricky...
+ // this is where it get's tricky...
string files = "";
try {
string[] cmd = { "ls-files" , "-m" }; // list the modified files..
return false;
}
try {
- if (branchname != "master") {
- string[] cmd = { "merge", "master" };
+ if (branchname != master) {
+ string[] cmd = { "merge", master };
this.git(cmd);
this.push();
}
} catch(Error e) {
- string[] cmd = { "checkout", "master" };
+ 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(
return true;
}
+
+ public static string previewMerges(string ticket_id)
+ {
+ var ret = "";
+ foreach(var repo in GitRepo.singleton().cache.values) {
+ if (repo.activeTicket == null || repo.activeTicket.id != ticket_id) {
+ continue;
+ }
+ ret += repo.previewMerge() + "\n\n";
+
+ }
+ return ret;
+
+ }
+
+
+
+ public string previewMerge()
+ {
+ try {
+ var master = this.hasBranchCalled("roojs") ? "roojs" : "master";
+ var lines = this.git({"log", master + "...", "--pretty=format:%H %P" }).split("\n");;
+ var head = this.git({"log", "-1", "--pretty=format:%H %P" });
+ var start = head.split(" ")[0];
+ var end = "";
+ for (var i = 0; i < lines.length; i++) {
+ var cols = lines[i].split(" ");
+ if (cols.length > 2) {
+ end = cols[0];
+ break;
+ }
+ }
+ if (end == "") {
+ var last = lines[lines.length-1];
+ end = last.split(" ")[1];
+ }
+
+ return this.git({ "diff" , (end+".."+start), "--no-color" });
+ } catch(Error ee) {
+ GitMonitor.gitmonitor.pauseError(ee.message);
+ return "Error getting diff";
+ }
+
+
+ }