From 491e352e4162542107e450f0223f87938b98f26c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 7 Jun 2014 21:31:47 +0200 Subject: [PATCH] Update to latest libgit2 --- pygit2/decl.h | 8 ++++++++ src/repository.c | 12 +++++++----- test/test_repository.py | 8 ++++---- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/pygit2/decl.h b/pygit2/decl.h index b261472..1d65df2 100644 --- a/pygit2/decl.h +++ b/pygit2/decl.h @@ -220,6 +220,13 @@ typedef struct git_checkout_options { const char *their_label; } git_checkout_options; +typedef enum { + GIT_CLONE_LOCAL_AUTO, + GIT_CLONE_LOCAL, + GIT_CLONE_NO_LOCAL, + GIT_CLONE_LOCAL_NO_LINKS, +} git_clone_local_t; + typedef struct git_clone_options { unsigned int version; @@ -228,6 +235,7 @@ typedef struct git_clone_options { int bare; int ignore_cert_errors; + git_clone_local_t local; const char *remote_name; const char* checkout_branch; git_signature *signature; diff --git a/src/repository.c b/src/repository.c index b2409ec..0b12053 100644 --- a/src/repository.c +++ b/src/repository.c @@ -546,13 +546,14 @@ Repository_merge_base(Repository *self, PyObject *args) } PyDoc_STRVAR(Repository_merge_analysis__doc__, - "merge_analysis(id) -> Integer\n" + "merge_analysis(id) -> (Integer, Integer)\n" "\n" "Analyzes the given branch and determines the opportunities for merging\n" "them into the HEAD of the repository\n" "\n" - "The returned value is a mixture of the GIT_MERGE_ANALYSIS_NONE, _NORMAL,\n" - " _UP_TO_DATE, _FASTFORWARD and _UNBORN flags"); + "The first returned value is a mixture of the GIT_MERGE_ANALYSIS_NONE, _NORMAL,\n" + " _UP_TO_DATE, _FASTFORWARD and _UNBORN flags.\n" + "The second value is the user's preference from 'merge.ff'"); PyObject * Repository_merge_analysis(Repository *self, PyObject *py_id) @@ -562,6 +563,7 @@ Repository_merge_analysis(Repository *self, PyObject *py_id) git_oid id; git_merge_head *merge_head; git_merge_analysis_t analysis; + git_merge_preference_t preference; len = py_oid_to_git_oid(py_id, &id); if (len == 0) @@ -571,13 +573,13 @@ Repository_merge_analysis(Repository *self, PyObject *py_id) if (err < 0) return Error_set(err); - err = git_merge_analysis(&analysis, self->repo, (const git_merge_head **) &merge_head, 1); + err = git_merge_analysis(&analysis, &preference, self->repo, (const git_merge_head **) &merge_head, 1); git_merge_head_free(merge_head); if (err < 0) return Error_set(err); - return PyLong_FromLong(analysis); + return Py_BuildValue("(ii)", analysis, preference); } PyDoc_STRVAR(Repository_merge__doc__, diff --git a/test/test_repository.py b/test/test_repository.py index c35b0fd..f404092 100644 --- a/test/test_repository.py +++ b/test/test_repository.py @@ -313,7 +313,7 @@ class RepositoryTest_III(utils.RepoTestCaseForMerging): def test_merge_analysis_uptodate(self): branch_head_hex = '5ebeeebb320790caf276b9fc8b24546d63316533' branch_id = self.repo.get(branch_head_hex).id - analysis = self.repo.merge_analysis(branch_id) + analysis, preference = self.repo.merge_analysis(branch_id) self.assertTrue(analysis & GIT_MERGE_ANALYSIS_UP_TO_DATE) self.assertFalse(analysis & GIT_MERGE_ANALYSIS_FASTFORWARD) @@ -322,7 +322,7 @@ class RepositoryTest_III(utils.RepoTestCaseForMerging): def test_merge_analysis_fastforward(self): branch_head_hex = 'e97b4cfd5db0fb4ebabf4f203979ca4e5d1c7c87' branch_id = self.repo.get(branch_head_hex).id - analysis = self.repo.merge_analysis(branch_id) + analysis, preference = self.repo.merge_analysis(branch_id) self.assertFalse(analysis & GIT_MERGE_ANALYSIS_UP_TO_DATE) self.assertTrue(analysis & GIT_MERGE_ANALYSIS_FASTFORWARD) self.assertEqual({}, self.repo.status()) @@ -330,7 +330,7 @@ class RepositoryTest_III(utils.RepoTestCaseForMerging): def test_merge_no_fastforward_no_conflicts(self): branch_head_hex = '03490f16b15a09913edb3a067a3dc67fbb8d41f1' branch_id = self.repo.get(branch_head_hex).id - analysis= self.repo.merge_analysis(branch_id) + analysis, preference = self.repo.merge_analysis(branch_id) self.assertFalse(analysis & GIT_MERGE_ANALYSIS_UP_TO_DATE) self.assertFalse(analysis & GIT_MERGE_ANALYSIS_FASTFORWARD) # Asking twice to assure the reference counting is correct @@ -341,7 +341,7 @@ class RepositoryTest_III(utils.RepoTestCaseForMerging): branch_head_hex = '1b2bae55ac95a4be3f8983b86cd579226d0eb247' branch_id = self.repo.get(branch_head_hex).id - analysis = self.repo.merge_analysis(branch_id) + analysis, preference = self.repo.merge_analysis(branch_id) self.assertFalse(analysis & GIT_MERGE_ANALYSIS_UP_TO_DATE) self.assertFalse(analysis & GIT_MERGE_ANALYSIS_FASTFORWARD)