fix commits
[gitlive] / GitBranch.vala
index a30808b..18aa32c 100644 (file)
@@ -35,6 +35,7 @@ public class GitBranch : Object
        public bool is_remote;
        public string remote = "";
        public string remoterev = "";
+       public string age = "";
        
        public string toString()
        {
@@ -44,7 +45,8 @@ public class GitBranch : Object
                        "lastrev: " + lastrev + "\n" +
                        "name: " + name + "\n" +
                        "remote: " + remote + "\n" +
-                       "remoterev: " + remoterev + "\n";
+                       "remoterev: " + remoterev + "\n" +
+                       "age: " + age + "\n" ;
        }
        
        
@@ -86,7 +88,7 @@ public class GitBranch : Object
         
          var bl = repo.git({
                 "for-each-ref",
-                "--format",   "%(refname:short):remotes/%(upstream:short)",
+                "--format",   "%(refname:short):remotes/%(upstream:short):remotes/%(authordate:relative)",
                 "refs/heads"
                }).split("\n");
         
@@ -97,13 +99,15 @@ public class GitBranch : Object
                var lname= ar[0];
             var rname = "remotes/" + ar[1];
             
+            
                 //print(rname);
                 // we should always have a local version of it.
             if (branches.has_key(lname)) {     
                    branches.get(lname).remote = rname;
+                   branches.get(lname).age = ar[2];
             }
             
-            if (!branches.has_key(rname)) {
+            if (!branches.has_key(rname) || !branches.has_key(lname)  ) {
                     continue;
             }
             branches.get(lname).remoterev =  branches.get(rname).lastrev;
@@ -111,8 +115,23 @@ public class GitBranch : Object
                 
             branches.get(rname).name = lname;
         }
-        foreach(var br in local.values) {
+        foreach(var br in branches.values) {
                GLib.debug("BRANCH:\n%s\n" , br.toString());
+               if (br.name.length > 0 || ! /^remotes\/origin\//.match(br.remote)) {
+                       GLib.debug("SKIP - track exists");
+                       continue;
+               }
+               var newname = br.remote.replace("remotes/origin/","");
+               if (branches.has_key(newname)) {
+                       GLib.debug("SKIP - have branch already");
+                       continue;
+                       }
+                   
+                
+               repo.git(  { "branch" ,"--track" , newname,  "origin/" + newname} ); 
+               //
+               br.name  = newname;
+               local.set(br.name, br);
         }
         
         /*