From a511f299bb63123ea046138f7e3049e9b4e34a39 Mon Sep 17 00:00:00 2001 From: Nico von Geyso <Nico.Geyso@FU-Berlin.de> Date: Wed, 28 Nov 2012 18:10:07 +0100 Subject: [PATCH] fixex api changes of libgit2 in 64c5112 --- include/pygit2/types.h | 2 +- src/pygit2/commit.c | 2 +- src/pygit2/config.c | 2 +- src/pygit2/diff.c | 24 ++++++++++++------------ src/pygit2/index.c | 8 ++++---- src/pygit2/reference.c | 26 +++++++++++++++----------- src/pygit2/repository.c | 8 ++++---- src/pygit2/tag.c | 2 +- test/test_refs.py | 1 + 9 files changed, 40 insertions(+), 35 deletions(-) diff --git a/include/pygit2/types.h b/include/pygit2/types.h index 9b4d917..e4e4f5d 100644 --- a/include/pygit2/types.h +++ b/include/pygit2/types.h @@ -97,7 +97,7 @@ typedef struct { typedef struct { PyObject_HEAD - git_index_entry *entry; + const git_index_entry *entry; } IndexEntry; typedef struct { diff --git a/src/pygit2/commit.c b/src/pygit2/commit.c index 6abc92a..c0ccee1 100644 --- a/src/pygit2/commit.c +++ b/src/pygit2/commit.c @@ -135,7 +135,7 @@ Commit_get_parents(Commit *commit) return NULL; for (i=0; i < parent_count; i++) { - parent_oid = git_commit_parent_oid(commit->commit, i); + parent_oid = git_commit_parent_id(commit->commit, i); if (parent_oid == NULL) { Py_DECREF(list); Error_set(GIT_ENOTFOUND); diff --git a/src/pygit2/config.c b/src/pygit2/config.c index 24e98ac..6a84f63 100644 --- a/src/pygit2/config.c +++ b/src/pygit2/config.c @@ -204,7 +204,7 @@ Config_setitem(Config *self, PyObject *py_key, PyObject *py_value) return -1; if (!py_value) { - err = git_config_delete(self->config, c_key); + err = git_config_delete_entry(self->config, c_key); } else if (PyBool_Check(py_value)) { err = git_config_set_bool(self->config, c_key, (int)PyObject_IsTrue(py_value)); diff --git a/src/pygit2/diff.c b/src/pygit2/diff.c index 526a312..8cd0d51 100644 --- a/src/pygit2/diff.c +++ b/src/pygit2/diff.c @@ -41,12 +41,12 @@ extern PyTypeObject DiffType; extern PyTypeObject HunkType; static int diff_data_cb( - void *cb_data, const git_diff_delta *delta, const git_diff_range *range, char line_origin, const char *content, - size_t content_len) + size_t content_len, + void *cb_data) { PyObject *hunks, *data; Hunk *hunk; @@ -72,11 +72,11 @@ static int diff_data_cb( } static int diff_hunk_cb( - void *cb_data, const git_diff_delta *delta, const git_diff_range *range, const char *header, - size_t header_len) + size_t header_len, + void *cb_data) { PyObject *hunks; Hunk *hunk; @@ -163,8 +163,8 @@ static int diff_hunk_cb( return 0; }; -static int diff_file_cb(void *cb_data, const git_diff_delta *delta, - float progress) +static int diff_file_cb(const git_diff_delta *delta, float progress, +void *cb_data) { PyObject *files, *file; @@ -202,10 +202,10 @@ Diff_changes(Diff *self) git_diff_foreach( self->diff, - self->diff_changes, &diff_file_cb, &diff_hunk_cb, - &diff_data_cb + &diff_data_cb, + self->diff_changes ); } @@ -213,12 +213,12 @@ Diff_changes(Diff *self) } static int diff_print_cb( - void *cb_data, const git_diff_delta *delta, const git_diff_range *range, char usage, const char *line, - size_t line_len) + size_t line_len, + void *cb_data) { PyObject *data = PyBytes_FromStringAndSize(line, line_len); PyBytes_ConcatAndDel((PyObject **)cb_data, data); @@ -231,7 +231,7 @@ Diff_patch(Diff *self) { PyObject *patch = PyBytes_FromString(""); - git_diff_print_patch(self->diff, &patch, &diff_print_cb); + git_diff_print_patch(self->diff, &diff_print_cb, (void*) &patch); return patch; } @@ -360,7 +360,7 @@ PyObject * Diff_find_similar(Diff *self, PyObject *args) { int err; - git_diff_options opts = {0}; + git_diff_find_options opts = {0}; if (!PyArg_ParseTuple(args, "|i", &opts.flags)) return NULL; diff --git a/src/pygit2/index.c b/src/pygit2/index.c index 327e314..2d1d8b5 100644 --- a/src/pygit2/index.c +++ b/src/pygit2/index.c @@ -264,7 +264,7 @@ Index_len(Index *self) } PyObject * -wrap_index_entry(git_index_entry *entry, Index *index) +wrap_index_entry(const git_index_entry *entry, Index *index) { IndexEntry *py_entry; @@ -278,8 +278,8 @@ wrap_index_entry(git_index_entry *entry, Index *index) PyObject * Index_getitem(Index *self, PyObject *value) { - int idx; - git_index_entry *index_entry; + size_t idx; + const git_index_entry *index_entry; idx = Index_get_position(self, value); if (idx == -1) @@ -460,7 +460,7 @@ IndexIter_dealloc(IndexIter *self) PyObject * IndexIter_iternext(IndexIter *self) { - git_index_entry *index_entry; + const git_index_entry *index_entry; index_entry = git_index_get_byindex(self->owner->index, self->i); if (!index_entry) diff --git a/src/pygit2/reference.c b/src/pygit2/reference.c index 75c937e..be572b4 100644 --- a/src/pygit2/reference.c +++ b/src/pygit2/reference.c @@ -63,13 +63,13 @@ PyObject* RefLogIter_iternext(PyObject *self) &RefLogEntryType, NULL, NULL ); - git_oid_fmt(oid_old, git_reflog_entry_oidold(entry)); - git_oid_fmt(oid_new, git_reflog_entry_oidnew(entry)); + git_oid_fmt(oid_old, git_reflog_entry_id_old(entry)); + git_oid_fmt(oid_new, git_reflog_entry_id_new(entry)); py_entry->oid_new = PyUnicode_FromStringAndSize(oid_new, 40); py_entry->oid_old = PyUnicode_FromStringAndSize(oid_old, 40); - py_entry->msg = strdup(git_reflog_entry_msg(entry)); + py_entry->msg = strdup(git_reflog_entry_message(entry)); signature = git_signature_dup( git_reflog_entry_committer(entry) @@ -220,10 +220,14 @@ Reference_get_target(Reference *self) CHECK_REFERENCE(self); /* Get the target */ - c_name = git_reference_target(self->reference); - if (c_name == NULL) { - PyErr_SetString(PyExc_ValueError, "no target available"); - return NULL; + if (GIT_REF_OID == git_reference_type(self->reference)) { + return git_oid_to_py_str(git_reference_target(self->reference)); + } else { + c_name = git_reference_symbolic_target(self->reference); + if (c_name == NULL) { + PyErr_SetString(PyExc_ValueError, "no target available"); + return NULL; + } } /* Make a PyString and return it */ @@ -244,7 +248,7 @@ Reference_set_target(Reference *self, PyObject *py_name) return -1; /* Set the new target */ - err = git_reference_set_target(self->reference, c_name); + err = git_reference_symbolic_set_target(self->reference, c_name); free(c_name); if (err < 0) { Error_set(err); @@ -269,7 +273,7 @@ Reference_get_oid(Reference *self) CHECK_REFERENCE(self); /* Get the oid (only for "direct" references) */ - oid = git_reference_oid(self->reference); + oid = git_reference_target(self->reference); if (oid == NULL) { PyErr_SetString(PyExc_ValueError, "oid is only available if the reference is direct " @@ -297,7 +301,7 @@ Reference_set_oid(Reference *self, PyObject *py_hex) } /* Set the oid */ - err = git_reference_set_oid(self->reference, &oid); + err = git_reference_set_target(self->reference, &oid); if (err < 0) { Error_set(err); return -1; @@ -314,7 +318,7 @@ Reference_get_hex(Reference *self) CHECK_REFERENCE(self); /* Get the oid (only for "direct" references) */ - oid = git_reference_oid(self->reference); + oid = git_reference_target(self->reference); if (oid == NULL) { PyErr_SetString(PyExc_ValueError, "oid is only available if the reference is direct " diff --git a/src/pygit2/repository.c b/src/pygit2/repository.c index 4b3ae17..b72ccf3 100644 --- a/src/pygit2/repository.c +++ b/src/pygit2/repository.c @@ -179,7 +179,7 @@ Repository_head(Repository *self) return NULL; } - oid = git_reference_oid(head); + oid = git_reference_target(head); pyobj = lookup_object(self, oid, GIT_OBJ_COMMIT); git_reference_free(head); return pyobj; @@ -527,7 +527,7 @@ Repository_create_blob_fromfile(Repository *self, PyObject *args) if (!PyArg_ParseTuple(args, "s", &path)) return NULL; - err = git_blob_create_fromfile(&oid, self->repo, path); + err = git_blob_create_fromworkdir(&oid, self->repo, path); if (err < 0) return Error_set(err); @@ -740,7 +740,7 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds) return Error_set(err); } - err = git_reference_create_oid(&c_reference, self->repo, c_name, &oid, force); + err = git_reference_create(&c_reference, self->repo, c_name, &oid, force); } else { #if PY_MAJOR_VERSION == 2 c_target = PyString_AsString(py_obj); @@ -750,7 +750,7 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds) if(c_target == NULL) return NULL; - err = git_reference_create_symbolic(&c_reference, self->repo, c_name, + err = git_reference_symbolic_create(&c_reference, self->repo, c_name, c_target, force); } diff --git a/src/pygit2/tag.c b/src/pygit2/tag.c index c34dbc0..d4745d2 100644 --- a/src/pygit2/tag.c +++ b/src/pygit2/tag.c @@ -39,7 +39,7 @@ Tag_get_target(Tag *self) { const git_oid *oid; - oid = git_tag_target_oid(self->tag); + oid = git_tag_target_id(self->tag); return git_oid_to_python(oid->id); } diff --git a/test/test_refs.py b/test/test_refs.py index b61d855..082e53d 100644 --- a/test/test_refs.py +++ b/test/test_refs.py @@ -174,6 +174,7 @@ class ReferencesTest(utils.RepoTestCase): self.assertTrue('refs/tags/version1' in refs) reference = self.repo.lookup_reference('refs/tags/version1') self.assertEqual(reference.hex, LAST_COMMIT) + self.assertEqual(reference.target, LAST_COMMIT) # try to create existing reference self.assertRaises(ValueError, self.repo.create_reference,