sync
[gitlive] / GitRepo.vala
index 034d535..ec10a01 100644 (file)
@@ -167,6 +167,7 @@ public class GitRepo : Object
                        cache.set( path, this);
        }
        this.loadBranches();
+       this.loadActiveTicket();
     } 
     
     public bool is_wip_branch()
@@ -179,6 +180,11 @@ public class GitRepo : Object
     {
        return !FileUtils.test(this.gitdir + "/.gitlive-disable-autocommit" , FileTest.EXISTS);
     }
+    
+    public bool is_auto_branch ()
+    {
+       return FileUtils.test(this.gitdir + "/.gitlive-enable-auto-branch" , FileTest.EXISTS);
+    }
     public bool is_autopush ()
     {
        return !FileUtils.test(this.gitdir + "/.gitlive-disable-autopush" , FileTest.EXISTS);
@@ -259,14 +265,14 @@ public class GitRepo : Object
                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..
+                          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(
+                      var notification = new Notify.Notification(
                                "Merged branch %s to master".printf(oldbranch),
                                "",
                                 "dialog-information"
@@ -332,14 +338,35 @@ public class GitRepo : Object
        }
        return false;
     }
+        
+    public void loadActiveTicket()
+    {
+       this.activeTicket = null;
+       if (!FileUtils.test(this.gitdir + "/.gitlive-active-ticket" , FileTest.EXISTS)) {
+               return;
+       }
+       string ticket_id;
+       FileUtils.get_contents(this.gitdir + "/.gitlive-active-ticket" , out ticket_id);  
+       if (ticket_id.length < 1) {
+               return;
+               }
+               this.activeTicket = RooTicket.singleton().getById(ticket_id.strip());
+       
+       
+    }
     
     
-    public bool setActiveTicket(RooTicket ticket, string branchname)
+    
+    public bool setActiveTicket(RooTicket? ticket, string branchname)
     {
        if (!this.createBranchNamed(branchname)) {
                return false;
                }
-       FileUtils.set_contents(this.gitdir + "/.gitlive-active-ticket" , ticket.id);
+               if (ticket != null) {
+               FileUtils.set_contents(this.gitdir + "/.gitlive-active-ticket" , ticket.id);
+       } else {
+               FileUtils.remove(this.gitdir + "/.gitlive-active-ticket" );
+       }
        this.activeTicket = ticket;
        return true;
     }
@@ -364,15 +391,16 @@ public class GitRepo : Object
                                  } catch(Error e) {
                                                GitMonitor.gitmonitor.pauseError(e.message);
                                                return false;           
-                               
                                  }
                                  try {
                                           if (branchname != "master") {
                                               string[] cmd = { "merge", "master"  };
                                                    this.git(cmd);
-                                              cmd = { "commit",   "-a" , "-m",  commit_message };
-                                      this.git( cmd );
+                                                   this.push();
+                                              //cmd = { "commit",   "-a" , "-m",  "merge master changes" };
+                                      //git chethis.git( cmd );
                                            }
+                                           
                                   } catch(Error e) {
                                            string[] cmd = { "checkout", "master"  };
                                            this.git(cmd);
@@ -398,8 +426,10 @@ public class GitRepo : Object
                                           
                                        string[] cmd = { "checkout", "-b" , branchname  };
                                        this.git(cmd);
-                                       
                        this.push();    
+                       cmd = { "branch", "--set-upstream-to=origin/"+branchname , branchname  };
+                                       this.git(cmd);
+                       
                                        } catch(Error ee) {
                                                GitMonitor.gitmonitor.pauseError(ee.message);
                                                return false;           
@@ -418,7 +448,7 @@ public class GitRepo : Object
        
         
         this.loadBranches(); // update branch list...
-        GitMonitor.gitmonitor.runQueue(); // commit any outstanding...
+        //GitMonitor.gitmonitor.runQueue(); // no point - we have hidden the queue..
         return true;
     }
     
@@ -582,7 +612,7 @@ public class GitRepo : Object
     public string push () throws Error, SpawnError
     {
         // should 
-        return this.git({ "push", "--all" });
+        return this.git({ "push"  });
         
     }