PyObject * Repository_create_reference(Repository *self, PyObject *args) { PyObject *py_oid; git_reference *c_reference; char *c_name; git_oid oid; int err; /* 1- Get the C variables */ if (!PyArg_ParseTuple(args, "sO", &c_name, &py_oid)) return NULL; err = py_str_to_git_oid_expand(self->repo, py_oid, &oid); if (err < 0) return Error_set(err); /* 2- Create the reference */ err = git_reference_create_oid(&c_reference, self->repo, c_name, &oid, 0); if (err < 0) return Error_set(err); /* 3- Make an instance of Reference and return it */ return wrap_reference(c_reference); }
PyObject * Repository_head__get__(Repository *self) { git_reference *head; int err; err = git_repository_head(&head, self->repo); if (err < 0) { if (err == GIT_ENOTFOUND) PyErr_SetString(GitError, "head reference does not exist"); else Error_set(err); return NULL; } return wrap_reference(head, self); }
PyObject * Repository_create_reference_symbolic(Repository *self, PyObject *args, PyObject *kw) { git_reference *c_reference; char *c_name, *c_target; int err, force; if (!PyArg_ParseTuple(args, "ssi", &c_name, &c_target, &force)) return NULL; err = git_reference_symbolic_create(&c_reference, self->repo, c_name, c_target, force, NULL, NULL); if (err < 0) return Error_set(err); return wrap_reference(c_reference, self); }
PyObject * Repository_create_symbolic_reference(Repository *self, PyObject *args) { git_reference *c_reference; char *c_name, *c_target; int err; /* 1- Get the C variables */ if (!PyArg_ParseTuple(args, "ss", &c_name, &c_target)) return NULL; /* 2- Create the reference */ err = git_reference_create_symbolic(&c_reference, self->repo, c_name, c_target, 0); if (err < 0) return Error_set(err); /* 3- Make an instance of Reference and return it */ return wrap_reference(c_reference); }
PyObject * Reference_resolve(Reference *self, PyObject *args) { git_reference *c_reference; int err; CHECK_REFERENCE(self); /* Direct: return myself */ if (git_reference_type(self->reference) == GIT_REF_OID) { Py_INCREF(self); return (PyObject *)self; } /* Symbolic: resolve */ err = git_reference_resolve(&c_reference, self->reference); if (err < 0) return Error_set(err); return wrap_reference(c_reference, self->repo); }
PyObject * Repository_create_reference(Repository *self, PyObject *args, PyObject *kw) { PyObject *py_obj; git_reference *c_reference; char *c_name, *c_target; git_oid oid; int err = 0, symbolic = 0, force = 0; static char *kwlist[] = {"name", "source", "force", "symbolic", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kw, "sO|ii", kwlist, &c_name, &py_obj, &force, &symbolic)) return NULL; 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(&c_reference, self->repo, c_name, &oid, force); } else { #if PY_MAJOR_VERSION == 2 c_target = PyString_AsString(py_obj); #else c_target = PyString_AsString(PyUnicode_AsASCIIString(py_obj)); #endif if(c_target == NULL) return NULL; err = git_reference_symbolic_create(&c_reference, self->repo, c_name, c_target, force); } if (err < 0) return Error_set(err); return wrap_reference(c_reference); }
PyObject * Repository_create_reference_direct(Repository *self, PyObject *args, PyObject *kw) { PyObject *py_obj; git_reference *c_reference; char *c_name; git_oid oid; int err, force; if (!PyArg_ParseTuple(args, "sOi", &c_name, &py_obj, &force)) return NULL; err = py_oid_to_git_oid_expand(self->repo, py_obj, &oid); if (err < 0) return NULL; err = git_reference_create(&c_reference, self->repo, c_name, &oid, force, NULL, NULL); if (err < 0) return Error_set(err); return wrap_reference(c_reference, self); }
PyObject * Repository_lookup_reference(Repository *self, PyObject *py_name) { git_reference *c_reference; char *c_name; int err; /* 1- Get the C name */ c_name = py_path_to_c_str(py_name); if (c_name == NULL) return NULL; /* 2- Lookup */ err = git_reference_lookup(&c_reference, self->repo, c_name); if (err < 0) { PyObject *err_obj = Error_set_str(err, c_name); free(c_name); return err_obj; } free(c_name); /* 3- Make an instance of Reference and return it */ return wrap_reference(c_reference); }