+ var head_commit = this.repo.lookup_commit(oid);
+
+ var master_tree = master_commit.get_tree();
+ var head_tree = head_commit.get_tree();
+
+ var diff = new Ggit.Diff.tree_to_tree(this.repo, master_tree, head_tree, new Ggit.DiffOptions());
+
+ diff.print(Ggit.DiffFormatType.PATCH, ( delta, hunk, line) => {
+ GLib.debug("%d: %s, %s", line.get_new_lineno(), line.get_origin().to_string(), line.get_text());
+ return 0;
+ });
+ // let's try a merge..
+ var mo = new Ggit.MergeOptions();
+ mo.set_file_favor(Ggit.MergeFileFavor.THEIRS);
+ var ix = this.repo.merge_trees(master_tree, master_tree, head_tree, mo);
+
+ if (ix.has_conflicts()) {
+ GLib.debug("merge has conflicts");
+ return;
+ }
+ var treeoid = ix.write_tree();
+
+
+
+ var parents = new Ggit.Commit[] { master_commit };
+
+
+ var new_tree = this.repo.lookup(treeoid,typeof (Ggit.Tree)) as Ggit.Tree;
+
+ var sig = new Ggit.Signature.now(
+ this.repo.get_config().get_string("user.name"),
+ this.repo.get_config().get_string("user.email")
+ );
+
+
+
+ this.repo.create_commit("HEAD", sig, sig, null, "Test Merge", new_tree, parents);
+
+
+
+ }
+
+ public void diffhead()
+ {
+ var r = this.repo.enumerate_branches(Ggit.BranchType.LOCAL);
+ Ggit.Branch head;