GitRepo.vala
[gitlive] / GitRepo.vala
index 35df2bb..fd202f8 100644 (file)
@@ -19,6 +19,7 @@ public class GitRepo : Object
     public string git_working_dir;
     public bool debug = false;
     public bool has_local_changes = false;
+    public string host = "";
     public string git_status;    
     public string git_diff;        
     public string ahead_or_behind = "";
@@ -171,6 +172,12 @@ public class GitRepo : Object
                if ( !cache.has_key(path) ) {
                        cache.set( path, this);
        }
+       
+       var r = this.git({ "remote" , "get-url" , "--push" , "origin"});
+       var uri = new Soup.URI(r);      
+       this.host = uri.get_host();
+
+       
        this.loadBranches();
        this.loadActiveTicket();
        this.loadStatus();
@@ -182,23 +189,37 @@ public class GitRepo : Object
        return this.currentBranch.name == "master" || this.currentBranch.name == "roojs";
                
     }
+    public void init_config()
+    {
+       // managed = 
+       if (this.get_config("managed") == "") {
+               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");
+               }
+    
+    }
+    
+    
+    
+    public string get_config(string key) {
+       return this.git({ "config" , "gitlive." + key });
+       }
+    public string set_config(string key, string value) {
+       return this.git({ "config" , "gitlive." + key, value });
+       }
     
     public bool is_managed()
     {
-       // is it a roojs origin?
-       var r = this.git({ "remote" , "get-url" , "--push" , "origin"});
-       var uri = new Soup.URI(r);
-       if (uri.get_host() != "git.roojs.com") { // we can only push to this url. -- unless we have forced it to be 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);
     }
     public void set_autocommit(bool val)
@@ -241,12 +262,24 @@ public class GitRepo : Object
                if (cur == val) {
                        return; // no change..
                }
-               if (val) {
-                       FileUtils.set_contents(this.gitdir + "/.gitlive-enable-auto-branch" , "x");
+       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" ); 
+                       }
+               return;
+
+       }
+       
+       if (val) {
+                       FileUtils.remove(this.gitdir + "/.gitlive-unmanaged" ); 
                } else {
-                       // it exists...
-                       FileUtils.remove(this.gitdir + "/.gitlive-enable-auto-branch" ); 
+               FileUtils.set_contents(this.gitdir + "/.gitlive-unmanaged" , "x");              
+
                }
+         
     
     }
     public bool is_autopush ()