Changed GitRepo.vala
[gitlive] / GitRepo.vala
index b444ce4..7cd755d 100644 (file)
@@ -131,9 +131,7 @@ public class GitRepo : Object
         }
     
         return list_cache;
-        
          
-          
        }
        
        public static GitRepo get(string path) 
@@ -184,6 +182,20 @@ public class GitRepo : Object
                
     }
     
+    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);  
+
+    }
+    
+    
     public bool is_autocommit ()
     {
        return !FileUtils.test(this.gitdir + "/.gitlive-disable-autocommit" , FileTest.EXISTS);
@@ -266,6 +278,7 @@ public class GitRepo : Object
     
     public void loadBranches()
     {
+
        GitBranch.loadBranches(this);
     }
      
@@ -552,6 +565,23 @@ public class GitRepo : Object
                        return true;
      
      }
+     
+     public string previewMerge()
+     {
+        try {                                  
+                       var lines = this.git({"log", "master...",  "--pretty=format:\"%H %P\"" }).split("\n");;
+                       var head = this.git({"log", "-1",  "--pretty=format:\"%H %P\"" });
+                       var last = lines[lines.length-1];
+                       var start = head.split(" ")[0];
+                       var end = last.split(" ")[1];
+                       return this.git({ "diff" , start+".."+end, "--no-color" });
+               }  catch(Error ee) {
+                       GitMonitor.gitmonitor.pauseError(ee.message);
+                       return "Error getting diff";            
+               }
+        
+     
+     }
     
     
     
@@ -846,14 +876,18 @@ public class GitRepo : Object
      
     public static void updateAll(string after)
     {
-                       update_all_after = after;
-               var tr =  GitRepo.singleton().cache;
-                
+               update_all_after = after;
+               var tr =  GitRepo.singleton().cache;
             
-           update_all_total = tr.size;
-           foreach(var repo  in tr.values) {
-                  repo.update_async(updateAllCallback); 
-            } 
+        
+       update_all_total = tr.size;
+       foreach(var repo  in tr.values) {
+                       if (!repo.is_managed()) {
+                       update_all_total--;                     
+                               continue;
+                       }
+           repo.update_async(updateAllCallback); 
+        } 
 
     }
     public static void  updateAllCallback(GitRepo repo, int err, string res)