Ggit.init();
var a = new GitLive.Repo("/home/alan/gitlive/gitlive");
- a.walkDiff();
+ a.mergeMasterIntoHead();
+ //a.walkDiff();
return;
a.is_managed();
a.is_autocommit();
{
this.loadLocalBranches();
+
+
var oid = this.repo.revparse(this.head.get_name() ).get_id() ;
var moid = this.repo.revparse("refs/heads/master" ).get_id() ;
public void mergeMasterIntoHead()
{
// assumes head is not master...
+ this.loadLocalBranches();
+ GLib.debug("head rev = %s", this.head.get_name());
var head_oid = this.repo.revparse(this.head.get_name() ).get_id() ;
- var master_oid = this.repo.revparse("refs/heads/master" ).get_id() ;
+ //var master_oid = this.repo.revparse("refs/heads/master" ).get_id() ;
+ var master_oid = this.repo.revparse("HEAD" ).get_id() ;
var master_commit = this.repo.lookup_commit(master_oid);;
var head_commit = this.repo.lookup_commit(head_oid);
- var anc_oid = this.repo.merge_base(master_commit.get_oid(), head_commit.get_oid());
+ var anc_oid = this.repo.merge_base(master_commit.get_id(), head_commit.get_id());
+
+ var anc_commit = this.repo.lookup_commit(anc_oid);
+ var anc_tree = anc_commit.get_tree();
+
+ var mo = new Ggit.MergeOptions();
+ var co = new Ggit.CheckoutOptions();
+ var the_ref = this.repo.lookup_reference_dwim("refs/heads/master");
+
+ var ac = new Ggit.AnnotatedCommit.from_ref(this.repo, the_ref);
+ var commits = new Ggit.AnnotatedCommit[] { ac };
+
+ this.repo.merge(commits, mo, co);
+ var sig = new Ggit.Signature.now(
+ this.repo.get_config().get_string("user.name"),
+ this.repo.get_config().get_string("user.email")
+ );
+ var new_head = this.repo.get_head();
+
+ this.repo.create_commit("HEAD", sig, sig, null, "Test Merge", new_tree, parents);
+
}