use latest development of libgit2 - changed GitError to ValueError
For already existing references a ValueError is raised (see sry/pygit2/error.c:41)
This commit is contained in:
parent
682fb1fd13
commit
e1acdb48bc
@ -661,7 +661,7 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds)
|
||||
git_reference *c_reference;
|
||||
char *c_name, *c_target;
|
||||
git_oid oid;
|
||||
int err, symbolic = 0, force = 0;
|
||||
int err = 0, symbolic = 0, force = 0;
|
||||
|
||||
static char *kwlist[] = {"name", "source", "force", "symbolic", NULL};
|
||||
|
||||
@ -669,7 +669,14 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds)
|
||||
&c_name, &py_obj, &force, &symbolic))
|
||||
return NULL;
|
||||
|
||||
if(symbolic) {
|
||||
if(!symbolic) {
|
||||
err = py_str_to_git_oid_expand(self->repo, py_obj, &oid);
|
||||
if (err < 0) {
|
||||
return Error_set(err);
|
||||
}
|
||||
|
||||
err = git_reference_create_oid(&c_reference, self->repo, c_name, &oid, force);
|
||||
} else {
|
||||
#if PY_MAJOR_VERSION == 2
|
||||
c_target = PyString_AsString(py_obj);
|
||||
#else
|
||||
@ -680,12 +687,6 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds)
|
||||
|
||||
err = git_reference_create_symbolic(&c_reference, self->repo, c_name,
|
||||
c_target, force);
|
||||
} else {
|
||||
err = py_str_to_git_oid_expand(self->repo, py_obj, &oid);
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
|
||||
err = git_reference_create_oid(&c_reference, self->repo, c_name, &oid, force);
|
||||
}
|
||||
|
||||
if (err < 0)
|
||||
|
@ -175,9 +175,11 @@ class ReferencesTest(utils.RepoTestCase):
|
||||
reference = self.repo.lookup_reference('refs/tags/version1')
|
||||
self.assertEqual(reference.hex, LAST_COMMIT)
|
||||
|
||||
self.assertRaises(GitError, self.repo.create_reference,
|
||||
# try to create existing reference
|
||||
self.assertRaises(ValueError, self.repo.create_reference,
|
||||
'refs/tags/version1', LAST_COMMIT)
|
||||
|
||||
# try to create existing reference with force
|
||||
reference = self.repo.create_reference('refs/tags/version1',
|
||||
LAST_COMMIT, force=True)
|
||||
self.assertEqual(reference.hex, LAST_COMMIT)
|
||||
@ -191,9 +193,12 @@ class ReferencesTest(utils.RepoTestCase):
|
||||
self.assertEqual(reference.type, GIT_REF_SYMBOLIC)
|
||||
self.assertEqual(reference.target, 'refs/heads/master')
|
||||
|
||||
self.assertRaises(GitError, self.repo.create_reference,
|
||||
|
||||
# try to create existing symbolic reference
|
||||
self.assertRaises(ValueError, self.repo.create_reference,
|
||||
'refs/tags/beta','refs/heads/master', symbolic=True)
|
||||
|
||||
# try to create existing symbolic reference with force
|
||||
reference = self.repo.create_reference('refs/tags/beta',
|
||||
'refs/heads/master', force=True, symbolic=True)
|
||||
self.assertEqual(reference.type, GIT_REF_SYMBOLIC)
|
||||
|
Loading…
x
Reference in New Issue
Block a user