int Branch_upstream__set__(Branch *self, Reference *py_ref) { int err; const char *branch_name = NULL; CHECK_REFERENCE_INT(self); if ((PyObject *)py_ref != Py_None) { if (!PyObject_TypeCheck(py_ref, (PyTypeObject *)&ReferenceType)) { PyErr_SetObject(PyExc_TypeError, (PyObject *)py_ref); return -1; } CHECK_REFERENCE_INT(py_ref); err = git_branch_name(&branch_name, py_ref->reference); if (err < GIT_OK) { Error_set(err); return -1; } } err = git_branch_set_upstream(self->reference, branch_name); if (err < GIT_OK) { Error_set(err); return -1; } return 0; }
int Reference_oid__set__(Reference *self, PyObject *py_hex) { git_oid oid; int err; git_reference *new_ref; CHECK_REFERENCE_INT(self); /* Get the oid */ err = py_str_to_git_oid_expand(git_reference_owner(self->reference), py_hex, &oid); if (err < 0) { Error_set(err); return -1; } /* Set the oid */ err = git_reference_set_target(&new_ref, self->reference, &oid); if (err < 0) { Error_set(err); return -1; } git_reference_free(self->reference); self->reference = new_ref; return 0; }
int Reference_target__set__(Reference *self, PyObject *py_name) { char *c_name; int err; git_reference *new_ref; CHECK_REFERENCE_INT(self); /* Get the C name */ c_name = py_path_to_c_str(py_name); if (c_name == NULL) return -1; /* Set the new target */ err = git_reference_symbolic_set_target(&new_ref, self->reference, c_name); free(c_name); if (err < 0) { Error_set(err); return -1; } git_reference_free(self->reference); self->reference = new_ref; return 0; }
int Reference_target__set__(Reference *self, PyObject *py_target) { git_oid oid; char *c_name; int err; git_reference *new_ref; CHECK_REFERENCE_INT(self); /* Case 1: Direct */ if (GIT_REF_OID == git_reference_type(self->reference)) { err = py_oid_to_git_oid_expand(self->repo->repo, py_target, &oid); if (err < 0) return err; err = git_reference_set_target(&new_ref, self->reference, &oid); if (err < 0) goto error; git_reference_free(self->reference); self->reference = new_ref; return 0; } /* Case 2: Symbolic */ c_name = py_path_to_c_str(py_target); if (c_name == NULL) return -1; err = git_reference_symbolic_set_target(&new_ref, self->reference, c_name); free(c_name); if (err < 0) goto error; git_reference_free(self->reference); self->reference = new_ref; return 0; error: Error_set(err); return -1; }