From 8b71a8045be73ff6a1abcc7ac68bbbc036ecf91b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= <carlos@cmartin.tk>
Date: Mon, 13 Feb 2012 15:00:39 +0100
Subject: [PATCH] Allow a 'source' arg to TreeBuilder()

---
 pygit2.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/pygit2.c b/pygit2.c
index 0d2796a..63b49b4 100644
--- a/pygit2.c
+++ b/pygit2.c
@@ -1598,10 +1598,22 @@ static PyTypeObject TreeType = {
 static int
 TreeBuilder_init(TreeBuilder *self, PyObject *args, PyObject *kwds)
 {
-    PyObject *py_name;
+    Tree *py_tree = NULL;
+    git_tree *tree;
     int err;
 
-    err = git_treebuilder_create(&self->bld, NULL);
+    if (kwds) {
+        PyErr_SetString(PyExc_TypeError,
+                        "TreeBuilder takes no keyword arguments");
+        return -1;
+    }
+
+    if (!PyArg_ParseTuple(args, "|O", &py_tree))
+        return -1;
+
+    tree = py_tree == NULL ? NULL : py_tree->tree;
+
+    err = git_treebuilder_create(&self->bld, tree);
     if (err < 0) {
         Error_set(err);
         return -1;