GitRepo.vala
[gitlive] / GitRepo.vala
index e02ae7b..5c866c3 100644 (file)
@@ -176,7 +176,7 @@ public class GitRepo : Object
        var r = this.git({ "remote" , "get-url" , "--push" , "origin"});
        var uri = new Soup.URI(r);      
        this.host = uri.get_host();
-
+               this.init_config();
        
        this.loadBranches();
        this.loadActiveTicket();
@@ -193,53 +193,44 @@ public class GitRepo : Object
     {
        // managed = 
        if (this.get_config("managed") == "") {
-               this.set_config("managed", this.host != "git.roojs.com" ? "1" : "0";
+               this.set_config("managed", this.host == "git.roojs.com" ? "1" : "0");
+               }
+       if (this.get_config("autocommit") == "") {
+               this.set_config("autocommit", this.host == "git.roojs.com" ? "1" : "0");
+               }
+       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);
+       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()
     {
-       // is it a roojs origin?
-        
-       if (this.host != "git.roojs.com") { // we can only push to this url. -- unless we have forced it to be managed.
-               var r = this.git({ "config" , "gitlive.managed");
-               
-               return FileUtils.test(this.gitdir + "/.gitlive-managed" , FileTest.EXISTS);
-       }
-       // otherwise see if unmanaged is set to disable it..
-       return !FileUtils.test(this.gitdir + "/.gitlive-unmanaged" , FileTest.EXISTS);  
-
+       return this.get_config("managed") == "1";
     }
     
     
     public bool is_autocommit ()
     {          
-       return !FileUtils.test(this.gitdir + "/.gitlive-disable-autocommit" , FileTest.EXISTS);
+       return this.get_config("autocommit") == "1";            
     }
+    
     public void set_autocommit(bool val)
     {
-
-               var cur = this.is_autocommit();
-               GLib.debug("SET auto commit : %s <= %s", val ? "ON" : "OFF",  cur  ? "ON" : "OFF");
-               if (cur == val) {
-                       return; // no change..
-               }
-               if (!val) {
-                       FileUtils.set_contents(this.gitdir + "/.gitlive-disable-autocommit" , "x");
-               } else {
-                       // it exists...
-                       FileUtils.remove(this.gitdir + "/.gitlive-disable-autocommit" ); 
-               }
+               this.set_config("autocommit", val ? "1" : "0");
     
     }
     
@@ -259,52 +250,19 @@ public class GitRepo : Object
     
     public void set_auto_branch(bool val)
     {
-
-               var cur = this.is_auto_branch();
-               GLib.debug("SET auto branch : %s <= %s", val ? "ON" : "OFF",  cur  ? "ON" : "OFF");
-               
-               if (cur == val) {
-                       return; // no change..
-               }
-       if (this.host != "git.roojs.com") { // we can only push to this url. -- unless we have forced it to be managed.
-               // remote is not our server..
-               if (val) {
-                       FileUtils.set_contents(this.gitdir + "/.gitlive-managed" , "x");
-               } else {
-                       FileUtils.remove(this.gitdir + "/.gitlive-managed" ); 
-                       }
+               if (this.name == "gitlog") {
                return;
-
-       }
-       
-       if (val) {
-                       FileUtils.remove(this.gitdir + "/.gitlive-unmanaged" ); 
-               } else {
-               FileUtils.set_contents(this.gitdir + "/.gitlive-unmanaged" , "x");              
-
                }
-         
+               this.set_config("managed", val ? "1" : "0");
     
     }
     public bool is_autopush ()
     {
-       return !FileUtils.test(this.gitdir + "/.gitlive-disable-autopush" , FileTest.EXISTS);
+       return this.get_config("autopush") == "1";
     }
     public void set_autopush(bool val)
     {
-
-               var cur = this.is_autopush();
-               GLib.debug("SET auto push : %s <= %s", val ? "ON" : "OFF",  cur  ? "ON" : "OFF");
-               if (cur == val) {
-                       return; // no change..
-               }
-               if (!val) {
-                       FileUtils.set_contents(this.gitdir + "/.gitlive-disable-autopush" , "");
-               } else {
-                       // it exists...
-                       FileUtils.remove(this.gitdir + "/.gitlive-disable-autopush" ); 
-               }
-    
+               this.set_config("autopush", val ? "1" : "0");
     }
     
     
@@ -457,11 +415,8 @@ public class GitRepo : Object
     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);  
+               var ticket_id = this.get_config("ticket");
+       
        if (ticket_id.length < 1) {
                return;
                }
@@ -474,14 +429,11 @@ public class GitRepo : Object
     
     public bool setActiveTicket(RooTicket? ticket, string branchname)
     {
+       this.set_config("ticket", "");
        if (!this.createBranchNamed(branchname)) {
                return false;
                }
-               if (ticket != null) {
-               FileUtils.set_contents(this.gitdir + "/.gitlive-active-ticket" , ticket.id);
-       } else {
-               FileUtils.remove(this.gitdir + "/.gitlive-active-ticket" );
-       }
+               this.set_config("ticket", ticket == null ? "": ticket.id);
        this.activeTicket = ticket;
        return true;
     }
@@ -825,6 +777,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);
@@ -926,7 +880,9 @@ public class GitRepo : Object
        repo.loadStatus();
        
        update_all_total--;
+               GLib.debug("calls remaining = %d", update_all_total);           
        if (update_all_total > 0 ) {
+
                return;
                }
                switch (update_all_after) {