GitRepo.vala
authorAlan Knowles <alan@roojs.com>
Wed, 20 Mar 2019 11:02:43 +0000 (19:02 +0800)
committerAlan Knowles <alan@roojs.com>
Wed, 20 Mar 2019 11:02:43 +0000 (19:02 +0800)
GitRepo.vala

index f966bb6..1f8eb09 100644 (file)
@@ -958,7 +958,7 @@ public class GitRepo : Object
     
     public async void doUpdate()
     {
-       SourceFunc callback = GitRepo.get.callback;
+       SourceFunc callback = this.doUpdate.callback;
                GitRepo ret = null;
                ThreadFunc<bool> run = () => {
                        
@@ -967,7 +967,7 @@ public class GitRepo : Object
                        this.loadBranches();
 
                        //GLib.debug("connecting '%s'", r.get_url());
-                       string[] far = {}
+                       string[] far = {};
                        foreach(var br in this.branches.values) {
                                if (br.remote == "" || br.remoterev == br.lastrev) {
                                        continue;
@@ -975,14 +975,15 @@ public class GitRepo : Object
                                far +=  ("+refs/heads/" + br.name + ":refs/remotes/" + br.remote);
                        }
                        if (far.length > 0) {
+                               GLib.debug("PUlling %s", this.name);
                                var r = this.repo.lookup_remote("origin");
-                               r.connect(Ggit.Direction.FETCH, new GitCallbacks, null, null);
+                               r.connect(Ggit.Direction.FETCH, new GitCallbacks(this), null, null);
                                var options = new Ggit.FetchOptions();
-                               //options.set_remote_callbacks(this.callbacks);
+                               options.set_remote_callbacks( new GitCallbacks(this));
                                r.download(far, options);
                        }
-                       repo.loadStatus();
-                       
+                       this.loadStatus();
+                        
                
                        Idle.add((owned) callback);
                return true;
@@ -990,12 +991,7 @@ public class GitRepo : Object
                };
                new Thread<bool>("thread-new-gitpull", run);
                yield;
-                 
-       
-       
-               
-               
-               
+                  
        
     }
     
@@ -1004,13 +1000,32 @@ public class GitRepo : Object
        {
                var done = 0;
                
+               var doing = new  Gee.HashMap<string,bool>();;
+               
                var tr =  GitRepo.singleton().cache;
-         
+        
        var update_all_total = tr.size;
        foreach(var repo  in tr.values) {
+               if (!repo.is_managed()) {
+                       update_all_total--;                     
+                               continue;
+                       }
+                       doing.set(repo.name, true);
                        repo.doUpdate.begin((obj, res) => {
-                               GitRepo.updateRepo.end(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);
+                                               }
+                                       }
+                               
+                               }
+                               
                                if (update_all_total != done) {
                                        return;
                                }
@@ -1022,7 +1037,7 @@ public class GitRepo : Object
                                                GLib.debug("Unkown call after load = %s", update_all_after);            
                                                break;
                                }
-                       }
+                       });
                }