X-Git-Url: http://git.roojs.org/?p=gitlive;a=blobdiff_plain;f=Git.vala;h=795eabbb1ae3dd342dad56151d92586e2a41509b;hp=60f04e6d04ce43f52e9a6128cae1c1eeb628f2d3;hb=refs%2Fheads%2Fwip_alan_T5782_messing_around_with_libgit2glib;hpb=d113cb999d2c97f342f52062ef2e1b19f878a65f diff --git a/Git.vala b/Git.vala index 60f04e6d..795eabbb 100644 --- a/Git.vala +++ b/Git.vala @@ -1,7 +1,6 @@ // valac -o /tmp/ggit Git.vala --pkg libgit2-glib-1.0 --pkg libsoup-2.4 --pkg gee-0.8 -g - - + void main() { @@ -17,21 +16,25 @@ void main() } ); - Ggit.init(); - - GLib.Timeout.add (5, () => { + Ggit.init(); + var a = new GitLive.Repo("/home/alan/gitlive/gitlive"); + a.diffhead(); + //a.fetchAll(); + return; + /* + GLib.Timeout.add (1, () => { GLib.debug("Meanwhile"); - return false; - }, GLib.Priority.DEFAULT); + return true; + }, GLib.Priority.HIGH); var loop = new MainLoop(); - - var a = new GitLive.Repo("/home/alan/gitlive/gitlive"); - + + var a = new GitLive.Repo("/home/alan/gitlive/web.coba"); + GLib.debug("Starting"); a.loadRemoteHeads.begin(true, (obj,res) => { a.loadRemoteHeads.end(res); - print("got results"); + GLib.debug("got results"); a.loadLocalBranches(); loop.quit(); }); @@ -104,19 +107,29 @@ namespace GitLive { var r = this.repo.enumerate_branches(Ggit.BranchType.LOCAL); while (r.next()) { var br = r.get() as Ggit.Branch; + if (br == null) { + continue; + } + if (br.is_tag()) { + continue; + } + //var head = this.repo.revparse("refs/heads/" + br.get_name() ).get_id(); //var rhead = this.repo.revparse(br.get_upstream().get_name() ).get_id(); - GLib.debug("got branch: H=%s name = %s upstream = %s oid = %s ", - br.is_head() ? "Y" : "n", - br.get_name(), - br.get_upstream().get_name().substring(20), - br.get_target().to_string()); - this.branches.add(br); - if (br.is_head()) { - GLib.debug("HEAD= %s", br.get_name()); - this.head = br; + try { + GLib.debug("got branch: N=%s", br.get_name() ); + GLib.debug("is_head %s", br.is_head() ? "Y" : "n"); + + GLib.debug("upstream = %s", br.get_upstream() == null ? "??" : br.get_upstream().get_name().substring(20)); + GLib.debug("oid = %s",br.get_target().to_string()); + this.branches.add(br); + if (br.is_head()) { + GLib.debug("HEAD= %s", br.get_name()); + this.head = br; + } + } catch (Error e) { + GLib.debug("Skip branch"); } - } @@ -208,6 +221,40 @@ namespace GitLive { } + + public void diffhead() + { + var r = this.repo.enumerate_branches(Ggit.BranchType.LOCAL); + Ggit.Branch? head = null; + while (r.next()) { + var gbr = r.get() as Ggit.Branch; + if (gbr.is_head()) { + head = gbr; + } + } + GLib.debug("checking head=%s",head == null ? "EMPTY" : head.get_name()); + var br = this.repo.lookup_branch(head.get_name(),Ggit.BranchType.LOCAL); + var commit = this.repo.lookup_commit(br.get_target()); + + + var diff = new Ggit.Diff.tree_to_workdir(this.repo, commit.get_tree(), new Ggit.DiffOptions()); + var ret = ""; + diff.print(Ggit.DiffFormatType.PATCH, (delta, hunk, line) => { + switch(line.get_origin()) { + case Ggit.DiffLineType.ADDITION: ret+="+"; break; + case Ggit.DiffLineType.DELETION: ret+="-";break; + case Ggit.DiffLineType.CONTEXT: ret+=" ";break; + case Ggit.DiffLineType.HUNK_HDR: break; + case Ggit.DiffLineType.FILE_HDR: break; + default: ret+=" ";break; + } + ret += " " + line.get_text(); + return 0; + }); + GLib.debug("%s", ret); + } + + public void mergeMasterIntoHead() { // assumes head is not master... @@ -260,6 +307,9 @@ namespace GitLive { } + + + /* public bool doMergeClose(string commit_message) { @@ -313,6 +363,7 @@ namespace GitLive { } var r = this.repo.lookup_remote("origin"); r.connect(Ggit.Direction.FETCH, this.callbacks, null, null); + yield; this.remote_heads = r.list(); foreach(var br in this.remote_heads) { @@ -321,7 +372,7 @@ namespace GitLive { } GLib.debug("Remote: name=%s oid=%s local_oid=%s is_local=%s", - br.get_name().substring(11), + br.get_name(), br.get_oid().to_string(), br.get_local_oid().to_string(), br.is_local() ? "Y" : "n" @@ -330,7 +381,7 @@ namespace GitLive { Idle.add((owned) callback); return true;; }; - new Thread("thread-example", run); + new Thread("loadRemoteHeads-" , run); yield;