X-Git-Url: http://git.roojs.org/?p=gitlive;a=blobdiff_plain;f=GitBranch.vala;h=18aa32c1f15350b1155e95ca4355d185fdc394ea;hp=a30808be43dba4807a3ba13e35fd978839d5dd79;hb=3ca10752a9d585c7d1f731322f9e1174493cc9e0;hpb=9e641e366549656621a3e4fc4950b62c4b395650 diff --git a/GitBranch.vala b/GitBranch.vala index a30808be..18aa32c1 100644 --- a/GitBranch.vala +++ b/GitBranch.vala @@ -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); } /*