GitRepo.vala
[gitlive] / GitRepo.vala
index 90045d3..07c6897 100644 (file)
@@ -29,6 +29,7 @@ public class GitRepo : Object
     public Gee.HashMap<string,GitBranch> branches; // accessed in GitBranch..
        public RooTicket? activeTicket;
     public  Gee.HashMap<string,GitRepo> cache;
+    public  Gee.HashMap<string,string> config_cache;
     
     
     
@@ -155,7 +156,8 @@ public class GitRepo : Object
      *
      */
      
-    private GitRepo(string path) {
+    private GitRepo(string path) 
+    {
         // cal parent?
         this.name =   File.new_for_path(path).get_basename();
         this.ignore_files = new Gee.HashMap<string,bool>();
@@ -191,6 +193,7 @@ public class GitRepo : Object
     }
     public void init_config()
     {
+       this.config_cache = new Gee.HashMap<string,string>();
        // managed = 
        if (this.get_config("managed") == "") {
                this.set_config("managed", this.host == "git.roojs.com" ? "1" : "0");
@@ -201,15 +204,25 @@ public class GitRepo : Object
        if (this.get_config("autopush") == "") {
                this.set_config("autopush", this.host == "git.roojs.com" ? "1" : "0");
                }
+               
     }
     
     
     
     public string get_config(string key) {
-       return this.git({ "config" , "gitlive." + key });
+    
+       if (this.config_cache.has_key(key)) {
+               return this.config_cache.get(key);
+               }
+       try {
+               return  this.git({ "config" , "gitlive." + key });
+       } catch (Error e) {
+               return ""; // happens when there is nothing set...
+       }
+
        }
-    public string set_config(string key, string value) {
-       return this.git({ "config" , "gitlive." + key, value });
+    public void set_config(string key, string value) {
+       this.git({ "config" , "gitlive." + key, value });
        }
     
     public bool is_managed()
@@ -772,6 +785,8 @@ public class GitRepo : Object
        // may throw error...
         var sp = new Spawn(cfg);
       
+            //GLib.debug( "GOT result: %d" , sp.result);
+      
        // diff output is a bit big..
                if (args_in[0] != "diff") {
                GLib.debug( "GOT: %s" , sp.output);
@@ -865,7 +880,7 @@ public class GitRepo : Object
                        }
            repo.update_async(updateAllCallback); 
         } 
-
+               GLib.debug("calls total = %d", (int) update_all_total);
     }
     public static void  updateAllCallback(GitRepo repo, int err, string res)
     {
@@ -873,7 +888,9 @@ public class GitRepo : Object
        repo.loadStatus();
        
        update_all_total--;
+               GLib.debug("calls remaining = %d", (int)update_all_total);      
        if (update_all_total > 0 ) {
+
                return;
                }
                switch (update_all_after) {