X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=GitRepo.vala;h=d69553c3845cb3c25de959b664d5d43708ee5044;hb=cea2d405d2f6721672a913c4b3f24180ec1d1516;hp=d69a112a8a1f916e5d2734afd96e6e993285ea31;hpb=d108f660aa6f8e281a883fe1fb2b13de97717a4c;p=gitlive diff --git a/GitRepo.vala b/GitRepo.vala index d69a112a..d69553c3 100644 --- a/GitRepo.vala +++ b/GitRepo.vala @@ -18,6 +18,7 @@ public class GitRepo : Object public bool debug = false; public Gee.HashMap ignore_files; + public GitBranch currentBranch; /** * index of.. matching gitpath.. @@ -73,7 +74,7 @@ public class GitRepo : Object } } catch (Error e) { - print("Error: %s\n",e.message); + GLib.debug("Error: %s",e.message); break; } @@ -136,6 +137,69 @@ public class GitRepo : Object //Repo.superclass.constructor.call(this,cfg); } + + + public bool is_autocommit () + { + return !FileUtils.test(this.gitdir + "/.gitlive-disable-autocommit" , FileTest.EXISTS); + } + public bool is_autopush () + { + return !FileUtils.test(this.gitdir + "/.gitlive-disable-autopush" , FileTest.EXISTS); + } + + Gee.HashMap branches; + + public void loadBranches() + { + this.branches = new Gee.HashMap(); + + string[] cmd = { "branch", "--no-color", "--verbose", "--no-abbrev" , "-a" }; + var res = this.git( cmd ); + var lines = res.split("\n"); + for (var i = 0; i < lines.length ; i++) { + var br = new GitBranch(this); + if (!br.parseBranchListItem(lines[i])) { + continue; + } + GLib.debug("add branch %s", br.realName()); + + branches.set(br.realName(), br); + if (br.active) { + this.currentBranch = br; + } + } + + } + public string branchesToString() + { + var ret = ""; + foreach( var br in this.branches.values) { + if (br.name == "") { + continue; + } + ret += ret.length > 0 ? "," : ""; + ret += br.name; + + } + return ret; + + } + + public void setActiveTicket(RooTicket ticket, string branchname) + { + this.createBranchNamed(branchname); + FileUtils.set_contents(this.gitdir + "/.gitlive-active-ticket" , ticket.id); + } + + public void createBranchNamed(string branchname) + { + string[] cmd = { "checkout", "-b" , branchname }; + this.git(cmd); + this.loadBranches(); // update branch list... + } + + /** * add: * add files to track. @@ -274,7 +338,7 @@ public class GitRepo : Object } - public delegate void GitAsyncCallback (GitRepo repo, string str); + public delegate void GitAsyncCallback (GitRepo repo, int err, string str); public void pull_async(GitAsyncCallback cb) { @@ -328,8 +392,8 @@ public class GitRepo : Object //this.lastCmd = args.join(" "); //if(this.debug) { - stdout.printf( "CWD=%s\n", this.git_working_dir ); - print( "cmd: %s\n", string.joinv (" ", args)); + GLib.debug( "CWD=%s", this.git_working_dir ); + GLib.debug( "cmd: %s", string.joinv (" ", args)); //} string[] env = {}; @@ -348,7 +412,7 @@ public class GitRepo : Object var sp = new Spawn(cfg); - stdout.printf( "GOT: %s\n" , sp.output); + GLib.debug( "GOT: %s" , sp.output); // parse output for some commands ? return sp.output; } @@ -374,8 +438,8 @@ public class GitRepo : Object //this.lastCmd = args.join(" "); //if(this.debug) { - stdout.printf( "CWD=%s\n", this.git_working_dir ); - print( "cmd: %s\n", string.joinv (" ", args)); + GLib.debug( "CWD=%s", this.git_working_dir ); + //print( "cmd: %s\n", string.joinv (" ", args)); //} string[] env = {}; @@ -401,8 +465,8 @@ public class GitRepo : Object void git_async_on_complete(int err, string output) { - print("GOT %s\n", output); - this.git_async_on_callback(this, output); + GLib.debug("GOT %d : %s", err, output); + this.git_async_on_callback(this, err, output); // this.unref(); // sp.unref();