NewBranch.bjs
[gitlive] / GitRepo.vala
index 107e968..73866d7 100644 (file)
@@ -26,7 +26,17 @@ public class GitRepo : Object
     
     public Gee.HashMap<string,bool> ignore_files;
      
-    public GitBranch  currentBranch;
+    public GitBranch  _currentBranch;
+    public GitBranch  getCurrentBranch() {
+       if (this._currentBranch == null) {
+               this.loadBranches();
+       }
+       if (this._currentBranch == null) {      
+               GLib.error("could not work out current branch?");
+               }
+               return this._currentBranch;
+    }
+    
     
     public Gee.HashMap<string,GitBranch> branches; // accessed in GitBranch..
        public RooTicket? activeTicket;
@@ -222,7 +232,7 @@ public class GitRepo : Object
     public bool is_master_branch()
     {
        // special branches that do not allow autopushing now...
-       return this.currentBranch.name == "master" || this.currentBranch.name == "roojs";
+       return this.getCurrentBranch().name == "master" || this.getCurrentBranch().name == "roojs";
                
     }
     public void init_config()
@@ -382,7 +392,7 @@ public class GitRepo : Object
                                continue;
                        }
                        commitrevs += commitrevs.length > 0 ? " " : "";
-                       commitrevs += repo.currentBranch.lastrev;
+                       commitrevs += repo.getCurrentBranch().lastrev;
                }
        }
        if (sucess && action == "CLOSE") {
@@ -402,7 +412,7 @@ public class GitRepo : Object
                   if (action == "CLOSE" || action == "LEAVE") {
                                   
                try {
-                   var oldbranch = this.currentBranch.name;
+                   var oldbranch = this.getCurrentBranch().name;
                    this.setActiveTicket(null, master);
                           string [] cmd = { "merge",   "--squash",  oldbranch };
                           this.git( cmd );
@@ -438,7 +448,7 @@ public class GitRepo : Object
                        string[] cmd = { "merge", master};
                        this.git( cmd );
                        var notification = new Notify.Notification(
-                                       "Merged code from %s to %s".printf(master,this.currentBranch.name),
+                                       "Merged code from %s to %s".printf(master,this.getCurrentBranch().name),
                                        "",
                                         "dialog-information"
                                        
@@ -454,7 +464,7 @@ public class GitRepo : Object
            }
        if (action == "EXIT") {
                        try {
-                       var oldbranch  = this.currentBranch.name;
+                       var oldbranch  = this.getCurrentBranch().name;
                          this.setActiveTicket(null, master);
                        this.loadBranches();
                        var notification = new Notify.Notification(
@@ -989,7 +999,7 @@ public class GitRepo : Object
                return true;
                        
                };
-               new Thread<bool>("thread-new-gitpull", run);
+               new Thread<bool>("thread-new-gitpull-" + this.name, run);
                yield;
                   
        
@@ -998,7 +1008,7 @@ public class GitRepo : Object
        
        public static void updateAllAsync(string after)
        {
-               var done = 0;
                
                var doing = new  Gee.HashMap<string,bool>();;
                
@@ -1014,21 +1024,15 @@ public class GitRepo : Object
                        repo.doUpdate.begin((obj, res) => {
                                repo.doUpdate.end(res);
                                doing.set(repo.name, false);
-                               done++;
-                               GLib.debug("total %d ?= done %d", update_all_total, done);
-                               
-                               if (update_all_total - done  < 10) {
-                                       foreach(var b in doing.keys) {
-                                               if (doing.get(b)) {
-                                                       GLib.debug("pending: %s", b);
-                                               }
+                                
+                               foreach(var b in doing.keys) {
+                                       if (doing.get(b)) {
+                                               GLib.debug("pending: %s", b);
+                                               return;
                                        }
-                               
-                               }
-                               
-                               if (update_all_total != done) {
-                                       return;
                                }
+                       
+                               
                                switch (after) {
                                        case "show_clones":
                                                Clones.singleton().show();