Coding style
Including: - Lines longer than 79 chars - Spaces at the end of line - Wrong indentation - Comma not followed by an space - C++ style comments: //
This commit is contained in:
parent
a80e989377
commit
a96d494747
@ -6,12 +6,13 @@ How to Install
|
||||
.. contents::
|
||||
|
||||
|
||||
First you need to install the latest version of libgit2.
|
||||
You can find platform-specific instructions to build the library in the libgit2 website:
|
||||
First you need to install the latest version of libgit2. You can find
|
||||
platform-specific instructions to build the library in the libgit2 website:
|
||||
|
||||
http://libgit2.github.com
|
||||
|
||||
Also, make sure you have Python 2.6+ installed together with the Python development headers.
|
||||
Also, make sure you have Python 2.6+ installed together with the Python
|
||||
development headers.
|
||||
|
||||
When those are installed, you can install pygit2::
|
||||
|
||||
|
@ -118,22 +118,13 @@ interfaces::
|
||||
>>> blob
|
||||
<pygit2.Blob object at 0xcc12d0>
|
||||
|
||||
This is the interface of a tree entry::
|
||||
|
||||
TreeEntry.name -- name of the tree entry
|
||||
TreeEntry.oid -- the id of the git object
|
||||
TreeEntry.hex -- hexadecimal representation of the oid
|
||||
TreeEntry.filemode -- the Unix file attributes
|
||||
TreeEntry.to_object() -- returns the git object (equivalent to repo[entry.oid])
|
||||
|
||||
|
||||
.. autoclass:: pygit2.Tree
|
||||
:members:
|
||||
:show-inheritance:
|
||||
:undoc-members:
|
||||
|
||||
.. autoclass:: pygit2.TreeEntry
|
||||
:members:
|
||||
:members: name, oid, hex, filemode, to_object
|
||||
:show-inheritance:
|
||||
:undoc-members:
|
||||
|
||||
|
@ -38,7 +38,8 @@ int Repository_traverse(Repository *self, visitproc visit, void *arg);
|
||||
int Repository_clear(Repository *self);
|
||||
int Repository_contains(Repository *self, PyObject *value);
|
||||
|
||||
git_odb_object* Repository_read_raw(git_repository *repo, const git_oid *oid, size_t len);
|
||||
git_odb_object*
|
||||
Repository_read_raw(git_repository *repo, const git_oid *oid, size_t len);
|
||||
|
||||
PyObject* Repository_head(Repository *self);
|
||||
PyObject* Repository_getitem(Repository *self, PyObject *value);
|
||||
@ -55,7 +56,10 @@ PyObject* Repository_create_commit(Repository *self, PyObject *args);
|
||||
PyObject* Repository_create_tag(Repository *self, PyObject *args);
|
||||
PyObject* Repository_listall_references(Repository *self, PyObject *args);
|
||||
PyObject* Repository_lookup_reference(Repository *self, PyObject *py_name);
|
||||
PyObject* Repository_create_reference(Repository *self, PyObject *args, PyObject* keywds);
|
||||
|
||||
PyObject*
|
||||
Repository_create_reference(Repository *self, PyObject *args, PyObject* kw);
|
||||
|
||||
PyObject* Repository_packall_references(Repository *self, PyObject *args);
|
||||
PyObject* Repository_status(Repository *self, PyObject *args);
|
||||
PyObject* Repository_status_file(Repository *self, PyObject *value);
|
||||
|
@ -40,6 +40,9 @@ PyObject* Signature_get_name(Signature *self);
|
||||
PyObject* Signature_get_email(Signature *self);
|
||||
PyObject* Signature_get_time(Signature *self);
|
||||
PyObject* Signature_get_offset(Signature *self);
|
||||
PyObject* build_signature(Object *obj, const git_signature *signature, const char *encoding);
|
||||
|
||||
PyObject*
|
||||
build_signature(Object *obj, const git_signature *signature,
|
||||
const char *encoding);
|
||||
|
||||
#endif
|
||||
|
@ -137,8 +137,10 @@ typedef struct {
|
||||
} Signature;
|
||||
|
||||
|
||||
PyObject* lookup_object_prefix(Repository *repo, const git_oid *oid, size_t len,
|
||||
PyObject*
|
||||
lookup_object_prefix(Repository *repo, const git_oid *oid, size_t len,
|
||||
git_otype type);
|
||||
|
||||
PyObject* lookup_object(Repository *repo, const git_oid *oid, git_otype type);
|
||||
|
||||
#endif
|
||||
|
16
setup.py
16
setup.py
@ -90,13 +90,15 @@ class TestCommand(Command):
|
||||
import shlex
|
||||
import unittest
|
||||
test_argv0 = [sys.argv[0] + ' test --args=']
|
||||
#For transfering args to unittest, we have to split args
|
||||
#by ourself, so that command like:
|
||||
#python setup.py test --args="-v -f"
|
||||
#can be executed, and the parameter '-v -f' can be
|
||||
#transfering to unittest properly.
|
||||
# For transfering args to unittest, we have to split args by ourself,
|
||||
# so that command like:
|
||||
#
|
||||
# python setup.py test --args="-v -f"
|
||||
#
|
||||
# can be executed, and the parameter '-v -f' can be transfering to
|
||||
# unittest properly.
|
||||
test_argv = test_argv0 + shlex.split(self.args)
|
||||
unittest.main(module=None, defaultTest='test.test_suite', argv=test_argv)
|
||||
unittest.main(None, defaultTest='test.test_suite', argv=test_argv)
|
||||
|
||||
|
||||
class BuildWithDLLs(build):
|
||||
@ -112,7 +114,7 @@ class BuildWithDLLs(build):
|
||||
libgit2_dlls.append('git2.dll')
|
||||
elif compiler_type == 'mingw32':
|
||||
libgit2_dlls.append('libgit2.dll')
|
||||
look_dirs = [libgit2_bin] + os.environ.get("PATH","").split(os.pathsep)
|
||||
look_dirs = [libgit2_bin] + os.getenv("PATH", "").split(os.pathsep)
|
||||
target = os.path.abspath(self.build_lib)
|
||||
for bin in libgit2_dlls:
|
||||
for look in look_dirs:
|
||||
|
26
src/config.c
26
src/config.c
@ -152,7 +152,7 @@ Config_contains(Config *self, PyObject *py_key) {
|
||||
const char *c_value;
|
||||
char *c_key;
|
||||
|
||||
c_key = py_str_to_c_str(py_key,NULL);
|
||||
c_key = py_str_to_c_str(py_key, NULL);
|
||||
if (c_key == NULL)
|
||||
return -1;
|
||||
|
||||
@ -177,7 +177,7 @@ Config_getitem(Config *self, PyObject *py_key)
|
||||
const char *c_charvalue;
|
||||
char *c_key;
|
||||
|
||||
if (!(c_key = py_str_to_c_str(py_key,NULL)))
|
||||
if (!(c_key = py_str_to_c_str(py_key, NULL)))
|
||||
return NULL;
|
||||
|
||||
err = git_config_get_int64(&c_intvalue, self->config, c_key);
|
||||
@ -212,7 +212,7 @@ Config_setitem(Config *self, PyObject *py_key, PyObject *py_value)
|
||||
char *c_key;
|
||||
char *py_str;
|
||||
|
||||
if (!(c_key = py_str_to_c_str(py_key,NULL)))
|
||||
if (!(c_key = py_str_to_c_str(py_key, NULL)))
|
||||
return -1;
|
||||
|
||||
if (!py_value) {
|
||||
@ -225,7 +225,7 @@ Config_setitem(Config *self, PyObject *py_key, PyObject *py_value)
|
||||
(int64_t)PyInt_AsLong(py_value));
|
||||
} else {
|
||||
py_value = PyObject_Str(py_value);
|
||||
py_str = py_str_to_c_str(py_value,NULL);
|
||||
py_str = py_str_to_c_str(py_value, NULL);
|
||||
err = git_config_set_string(self->config, c_key, py_str);
|
||||
free(py_str);
|
||||
}
|
||||
@ -257,7 +257,7 @@ Config_foreach_callback_wrapper(const git_config_entry *entry, void *c_payload)
|
||||
if (!args)
|
||||
return -1;
|
||||
|
||||
if (!(py_result = PyObject_CallObject(py_callback,args)))
|
||||
if (!(py_result = PyObject_CallObject(py_callback, args)))
|
||||
return -1;
|
||||
|
||||
if ((c_result = PyLong_AsLong(py_result) == -1))
|
||||
@ -415,14 +415,14 @@ PyMethodDef Config_methods[] = {
|
||||
};
|
||||
|
||||
PySequenceMethods Config_as_sequence = {
|
||||
0, /* sq_length */
|
||||
0, /* sq_concat */
|
||||
0, /* sq_repeat */
|
||||
0, /* sq_item */
|
||||
0, /* sq_slice */
|
||||
0, /* sq_ass_item */
|
||||
0, /* sq_ass_slice */
|
||||
(objobjproc)Config_contains,/* sq_contains */
|
||||
0, /* sq_length */
|
||||
0, /* sq_concat */
|
||||
0, /* sq_repeat */
|
||||
0, /* sq_item */
|
||||
0, /* sq_slice */
|
||||
0, /* sq_ass_item */
|
||||
0, /* sq_ass_slice */
|
||||
(objobjproc)Config_contains, /* sq_contains */
|
||||
};
|
||||
|
||||
PyMappingMethods Config_as_mapping = {
|
||||
|
20
src/diff.c
20
src/diff.c
@ -54,12 +54,12 @@ static int diff_data_cb(
|
||||
|
||||
hunks = PyDict_GetItemString(cb_data, "hunks");
|
||||
if (hunks == NULL)
|
||||
return -1;
|
||||
return -1;
|
||||
|
||||
size = PyList_Size(hunks);
|
||||
hunk = (Hunk *)PyList_GetItem(hunks, size - 1);
|
||||
if (hunk == NULL)
|
||||
return -1;
|
||||
return -1;
|
||||
|
||||
data = Py_BuildValue("(s#,i)",
|
||||
content, content_len,
|
||||
@ -149,11 +149,10 @@ static int diff_hunk_cb(
|
||||
hunk->new_file = "";
|
||||
}
|
||||
|
||||
if (hunk->data == NULL) {
|
||||
hunk->data = PyList_New(0);
|
||||
}
|
||||
if (hunk->data == NULL)
|
||||
hunk->data = PyList_New(0);
|
||||
|
||||
if(PyList_Append(hunks, (PyObject *)hunk) == 0) {
|
||||
if (PyList_Append(hunks, (PyObject *)hunk) == 0) {
|
||||
Py_DECREF(hunk);
|
||||
}
|
||||
else {
|
||||
@ -168,10 +167,10 @@ diff_file_cb(const git_diff_delta *delta, float progress, void *cb_data)
|
||||
{
|
||||
PyObject *files, *file;
|
||||
|
||||
if(delta->old_file.path != NULL && delta->new_file.path != NULL) {
|
||||
if (delta->old_file.path != NULL && delta->new_file.path != NULL) {
|
||||
files = PyDict_GetItemString(cb_data, "files");
|
||||
|
||||
if(files == NULL) {
|
||||
if (files == NULL) {
|
||||
files = PyList_New(0);
|
||||
PyDict_SetItemString(cb_data, "files", files);
|
||||
Py_DECREF(files);
|
||||
@ -184,10 +183,9 @@ diff_file_cb(const git_diff_delta *delta, float progress, void *cb_data)
|
||||
delta->similarity
|
||||
);
|
||||
|
||||
if (PyList_Append(files, file) == 0) {
|
||||
// If success
|
||||
/* If success */
|
||||
if (PyList_Append(files, file) == 0)
|
||||
Py_DECREF(file);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
22
src/error.c
22
src/error.c
@ -32,40 +32,40 @@ PyObject *GitError;
|
||||
PyObject * Error_type(int type)
|
||||
{
|
||||
const git_error* error;
|
||||
// Expected
|
||||
/* Expected */
|
||||
switch (type) {
|
||||
/** Input does not exist in the scope searched. */
|
||||
/* Input does not exist in the scope searched. */
|
||||
case GIT_ENOTFOUND:
|
||||
return PyExc_KeyError;
|
||||
|
||||
/** A reference with this name already exists */
|
||||
/* A reference with this name already exists */
|
||||
case GIT_EEXISTS:
|
||||
return PyExc_ValueError;
|
||||
|
||||
/** The given short oid is ambiguous */
|
||||
/* The given short oid is ambiguous */
|
||||
case GIT_EAMBIGUOUS:
|
||||
return PyExc_ValueError;
|
||||
|
||||
/** The buffer is too short to satisfy the request */
|
||||
/* The buffer is too short to satisfy the request */
|
||||
case GIT_EBUFS:
|
||||
return PyExc_ValueError;
|
||||
|
||||
/** Invalid input spec */
|
||||
/* Invalid input spec */
|
||||
case GIT_EINVALIDSPEC:
|
||||
return PyExc_ValueError;
|
||||
|
||||
/** Skip and passthrough the given ODB backend */
|
||||
/* Skip and passthrough the given ODB backend */
|
||||
case GIT_PASSTHROUGH:
|
||||
return GitError;
|
||||
|
||||
/** No entries left in ref walker */
|
||||
/* No entries left in ref walker */
|
||||
case GIT_ITEROVER:
|
||||
return PyExc_StopIteration;
|
||||
}
|
||||
|
||||
// Critical
|
||||
/* Critical */
|
||||
error = giterr_last();
|
||||
if(error != NULL) {
|
||||
if (error != NULL) {
|
||||
switch (error->klass) {
|
||||
case GITERR_NOMEMORY:
|
||||
return PyExc_MemoryError;
|
||||
@ -107,7 +107,7 @@ PyObject* Error_set_str(int err, const char *str)
|
||||
}
|
||||
|
||||
error = giterr_last();
|
||||
if (error == NULL) //expected error - no error msg set
|
||||
if (error == NULL) /* Expected error - no error msg set */
|
||||
return PyErr_Format(Error_type(err), "%s", str);
|
||||
|
||||
return PyErr_Format(Error_type(err), "%s: %s", str, error->message);
|
||||
|
@ -371,8 +371,8 @@ Index_setitem(Index *self, PyObject *key, PyObject *value)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(Index_remove(self, Py_BuildValue("(N)", key)) == NULL)
|
||||
return -1;
|
||||
if (Index_remove(self, Py_BuildValue("(N)", key)) == NULL)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
65
src/pygit2.c
65
src/pygit2.c
@ -168,7 +168,8 @@ hash(PyObject *self, PyObject *args)
|
||||
|
||||
|
||||
PyMethodDef module_methods[] = {
|
||||
{"init_repository", init_repository, METH_VARARGS|METH_KEYWORDS, init_repository__doc__},
|
||||
{"init_repository", init_repository, METH_VARARGS|METH_KEYWORDS,
|
||||
init_repository__doc__},
|
||||
{"discover_repository", discover_repository, METH_VARARGS,
|
||||
discover_repository__doc__},
|
||||
{"hashfile", hashfile, METH_VARARGS, hashfile__doc__},
|
||||
@ -337,19 +338,19 @@ moduleinit(PyObject* m)
|
||||
GIT_DIFF_RECURSE_UNTRACKED_DIRS);
|
||||
|
||||
/* Flags for diff find similar */
|
||||
// --find-renames
|
||||
/* --find-renames */
|
||||
PyModule_AddIntConstant(m, "GIT_DIFF_FIND_RENAMES",
|
||||
GIT_DIFF_FIND_RENAMES);
|
||||
// --break-rewrites=N
|
||||
/* --break-rewrites=N */
|
||||
PyModule_AddIntConstant(m, "GIT_DIFF_FIND_RENAMES_FROM_REWRITES",
|
||||
GIT_DIFF_FIND_RENAMES_FROM_REWRITES);
|
||||
// --find-copies
|
||||
/* --find-copies */
|
||||
PyModule_AddIntConstant(m, "GIT_DIFF_FIND_COPIES",
|
||||
GIT_DIFF_FIND_COPIES);
|
||||
// --find-copies-harder
|
||||
/* --find-copies-harder */
|
||||
PyModule_AddIntConstant(m, "GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED",
|
||||
GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED);
|
||||
// --break-rewrites=/M
|
||||
/* --break-rewrites=/M */
|
||||
PyModule_AddIntConstant(m, "GIT_DIFF_FIND_AND_BREAK_REWRITES",
|
||||
GIT_DIFF_FIND_AND_BREAK_REWRITES);
|
||||
|
||||
@ -427,32 +428,32 @@ moduleinit(PyObject* m)
|
||||
|
||||
|
||||
#if PY_MAJOR_VERSION < 3
|
||||
PyMODINIT_FUNC
|
||||
init_pygit2(void)
|
||||
{
|
||||
PyObject* m;
|
||||
m = Py_InitModule3("_pygit2", module_methods,
|
||||
"Python bindings for libgit2.");
|
||||
moduleinit(m);
|
||||
}
|
||||
PyMODINIT_FUNC
|
||||
init_pygit2(void)
|
||||
{
|
||||
PyObject* m;
|
||||
m = Py_InitModule3("_pygit2", module_methods,
|
||||
"Python bindings for libgit2.");
|
||||
moduleinit(m);
|
||||
}
|
||||
#else
|
||||
struct PyModuleDef moduledef = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"_pygit2", /* m_name */
|
||||
"Python bindings for libgit2.", /* m_doc */
|
||||
-1, /* m_size */
|
||||
module_methods, /* m_methods */
|
||||
NULL, /* m_reload */
|
||||
NULL, /* m_traverse */
|
||||
NULL, /* m_clear */
|
||||
NULL, /* m_free */
|
||||
};
|
||||
struct PyModuleDef moduledef = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"_pygit2", /* m_name */
|
||||
"Python bindings for libgit2.", /* m_doc */
|
||||
-1, /* m_size */
|
||||
module_methods, /* m_methods */
|
||||
NULL, /* m_reload */
|
||||
NULL, /* m_traverse */
|
||||
NULL, /* m_clear */
|
||||
NULL, /* m_free */
|
||||
};
|
||||
|
||||
PyMODINIT_FUNC
|
||||
PyInit__pygit2(void)
|
||||
{
|
||||
PyObject* m;
|
||||
m = PyModule_Create(&moduledef);
|
||||
return moduleinit(m);
|
||||
}
|
||||
PyMODINIT_FUNC
|
||||
PyInit__pygit2(void)
|
||||
{
|
||||
PyObject* m;
|
||||
m = PyModule_Create(&moduledef);
|
||||
return moduleinit(m);
|
||||
}
|
||||
#endif
|
||||
|
@ -74,10 +74,9 @@ PyObject* RefLogIter_iternext(PyObject *self)
|
||||
git_reflog_entry_committer(entry)
|
||||
);
|
||||
|
||||
if(signature != NULL)
|
||||
py_entry->committer = build_signature(
|
||||
(Object*)py_entry, signature, "utf-8"
|
||||
);
|
||||
if (signature != NULL)
|
||||
py_entry->committer = build_signature(
|
||||
(Object*)py_entry, signature, "utf-8");
|
||||
|
||||
++(p->i);
|
||||
|
||||
|
46
src/remote.c
46
src/remote.c
@ -156,8 +156,8 @@ Remote_fetchspec__set__(Remote *self, PyObject* py_tuple)
|
||||
if (!PyArg_ParseTuple(py_tuple, "ss", &src, &dst))
|
||||
return -1;
|
||||
|
||||
// length is strlen('+' + src + ':' + dst) and Null-Byte
|
||||
length = strlen(src) + strlen(dst) + 3;
|
||||
/* length is strlen('+' + src + ':' + dst) and Null-Byte */
|
||||
length = strlen(src) + strlen(dst) + 3;
|
||||
buf = (char*) calloc(length, sizeof(char));
|
||||
if (buf != NULL) {
|
||||
sprintf(buf, "+%s:%s", src, dst);
|
||||
@ -165,7 +165,7 @@ Remote_fetchspec__set__(Remote *self, PyObject* py_tuple)
|
||||
free(buf);
|
||||
|
||||
if (err == GIT_OK)
|
||||
return 0;
|
||||
return 0;
|
||||
|
||||
Error_set_exc(PyExc_ValueError);
|
||||
}
|
||||
@ -184,29 +184,29 @@ PyDoc_STRVAR(Remote_fetch__doc__,
|
||||
PyObject *
|
||||
Remote_fetch(Remote *self, PyObject *args)
|
||||
{
|
||||
PyObject* py_stats = NULL;
|
||||
const git_transfer_progress *stats;
|
||||
int err;
|
||||
PyObject* py_stats = NULL;
|
||||
const git_transfer_progress *stats;
|
||||
int err;
|
||||
|
||||
err = git_remote_connect(self->remote, GIT_DIRECTION_FETCH);
|
||||
if (err == GIT_OK) {
|
||||
err = git_remote_download(self->remote, NULL, NULL);
|
||||
if (err == GIT_OK) {
|
||||
stats = git_remote_stats(self->remote);
|
||||
py_stats = Py_BuildValue("{s:I,s:I,s:n}",
|
||||
"indexed_objects", stats->indexed_objects,
|
||||
"received_objects", stats->received_objects,
|
||||
"received_bytes", stats->received_bytes);
|
||||
err = git_remote_connect(self->remote, GIT_DIRECTION_FETCH);
|
||||
if (err == GIT_OK) {
|
||||
err = git_remote_download(self->remote, NULL, NULL);
|
||||
if (err == GIT_OK) {
|
||||
stats = git_remote_stats(self->remote);
|
||||
py_stats = Py_BuildValue("{s:I,s:I,s:n}",
|
||||
"indexed_objects", stats->indexed_objects,
|
||||
"received_objects", stats->received_objects,
|
||||
"received_bytes", stats->received_bytes);
|
||||
|
||||
err = git_remote_update_tips(self->remote);
|
||||
}
|
||||
git_remote_disconnect(self->remote);
|
||||
}
|
||||
err = git_remote_update_tips(self->remote);
|
||||
}
|
||||
git_remote_disconnect(self->remote);
|
||||
}
|
||||
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
|
||||
return (PyObject*) py_stats;
|
||||
return (PyObject*) py_stats;
|
||||
}
|
||||
|
||||
|
||||
@ -239,7 +239,7 @@ PyTypeObject RemoteType = {
|
||||
0, /* tp_as_sequence */
|
||||
0, /* tp_as_mapping */
|
||||
0, /* tp_hash */
|
||||
(ternaryfunc) Remote_call, /* tp_call */
|
||||
(ternaryfunc) Remote_call, /* tp_call */
|
||||
0, /* tp_str */
|
||||
0, /* tp_getattro */
|
||||
0, /* tp_setattro */
|
||||
|
@ -209,8 +209,8 @@ Repository_head__get__(Repository *self)
|
||||
int err;
|
||||
|
||||
err = git_repository_head(&head, self->repo);
|
||||
if(err < 0) {
|
||||
if(err == GIT_ENOTFOUND)
|
||||
if (err < 0) {
|
||||
if (err == GIT_ENOTFOUND)
|
||||
PyErr_SetString(GitError, "head reference does not exist");
|
||||
else
|
||||
Error_set(err);
|
||||
@ -856,20 +856,20 @@ Repository_create_reference(Repository *self, PyObject *args, PyObject *kw)
|
||||
&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) {
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
}
|
||||
|
||||
err = git_reference_create(&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);
|
||||
#else
|
||||
c_target = PyString_AsString(PyUnicode_AsASCIIString(py_obj));
|
||||
#endif
|
||||
if(c_target == NULL)
|
||||
if (c_target == NULL)
|
||||
return NULL;
|
||||
|
||||
err = git_reference_symbolic_create(&c_reference, self->repo, c_name,
|
||||
@ -981,7 +981,7 @@ Repository_TreeBuilder(Repository *self, PyObject *args)
|
||||
if (PyObject_TypeCheck(py_src, &TreeType)) {
|
||||
Tree *py_tree = (Tree *)py_src;
|
||||
if (py_tree->repo->repo != self->repo) {
|
||||
//return Error_set(GIT_EINVALIDARGS);
|
||||
/* return Error_set(GIT_EINVALIDARGS); */
|
||||
return Error_set(GIT_ERROR);
|
||||
}
|
||||
tree = py_tree->tree;
|
||||
@ -998,9 +998,8 @@ Repository_TreeBuilder(Repository *self, PyObject *args)
|
||||
}
|
||||
|
||||
err = git_treebuilder_create(&bld, tree);
|
||||
if (must_free != NULL) {
|
||||
if (must_free != NULL)
|
||||
git_tree_free(must_free);
|
||||
}
|
||||
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
@ -1090,10 +1089,10 @@ Repository_checkout(Repository *self, PyObject *args, PyObject *kw)
|
||||
&strategy, &ReferenceType, &ref, &head))
|
||||
return NULL;
|
||||
|
||||
if (ref != NULL) { // checkout from treeish
|
||||
if (ref != NULL) { /* checkout from treeish */
|
||||
id = git_reference_target(ref->reference);
|
||||
err = git_object_lookup(&object, self->repo, id, GIT_OBJ_COMMIT);
|
||||
if(err == GIT_OK) {
|
||||
if (err == GIT_OK) {
|
||||
opts.checkout_strategy = strategy;
|
||||
err = git_checkout_tree(self->repo, object, &opts);
|
||||
if (err == GIT_OK) {
|
||||
@ -1101,13 +1100,13 @@ Repository_checkout(Repository *self, PyObject *args, PyObject *kw)
|
||||
git_reference_name(ref->reference));
|
||||
}
|
||||
}
|
||||
} else { // checkout from head / index
|
||||
} else { /* checkout from head / index */
|
||||
opts.checkout_strategy = strategy;
|
||||
err = (!head) ? git_checkout_index(self->repo, NULL, &opts) :
|
||||
git_checkout_head(self->repo, &opts);
|
||||
}
|
||||
|
||||
if(err < 0)
|
||||
if (err < 0)
|
||||
return Error_set(err);
|
||||
|
||||
Py_RETURN_NONE;
|
||||
|
@ -282,7 +282,7 @@ Tree_getitem(Tree *self, PyObject *value)
|
||||
if (err < 0)
|
||||
return (TreeEntry*)Error_set(err);
|
||||
|
||||
// git_tree_entry_dup is already done in git_tree_entry_bypath
|
||||
/* git_tree_entry_dup is already done in git_tree_entry_bypath */
|
||||
return wrap_tree_entry(entry, self);
|
||||
}
|
||||
|
||||
|
@ -32,8 +32,8 @@
|
||||
|
||||
extern PyTypeObject ReferenceType;
|
||||
|
||||
// py_str_to_c_str() returns a newly allocated C string holding
|
||||
// the string contained in the value argument.
|
||||
/* py_str_to_c_str() returns a newly allocated C string holding
|
||||
* the string contained in the value argument. */
|
||||
char * py_str_to_c_str(PyObject *value, const char *encoding)
|
||||
{
|
||||
/* Case 1: byte string */
|
||||
|
@ -30,8 +30,6 @@
|
||||
from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
import unittest
|
||||
import tempfile
|
||||
import os
|
||||
|
||||
import pygit2
|
||||
from . import utils
|
||||
|
@ -78,7 +78,7 @@ class ConfigTest(utils.RepoTestCase):
|
||||
self.assertFalse(config_read['core.bare'])
|
||||
self.assertTrue('core.editor' in config_read)
|
||||
self.assertEqual(config_read['core.editor'], 'ed')
|
||||
|
||||
|
||||
def test_add(self):
|
||||
config = pygit2.Config()
|
||||
|
||||
@ -98,9 +98,10 @@ class ConfigTest(utils.RepoTestCase):
|
||||
|
||||
self.assertRaises(TypeError, lambda: config[()])
|
||||
self.assertRaises(TypeError, lambda: config[-4])
|
||||
self.assertRaisesWithArg(ValueError,
|
||||
"Invalid config item name 'abc'", lambda: config['abc'])
|
||||
self.assertRaisesWithArg(KeyError, 'abc.def', lambda: config['abc.def'])
|
||||
self.assertRaisesWithArg(ValueError, "Invalid config item name 'abc'",
|
||||
lambda: config['abc'])
|
||||
self.assertRaisesWithArg(KeyError, 'abc.def',
|
||||
lambda: config['abc.def'])
|
||||
|
||||
self.assertTrue('core.bare' in config)
|
||||
self.assertFalse(config['core.bare'])
|
||||
@ -117,7 +118,7 @@ class ConfigTest(utils.RepoTestCase):
|
||||
self.assertTrue('this.that' in config)
|
||||
self.assertEqual(len(config.get_multivar('this.that')), 2)
|
||||
l = config.get_multivar('this.that', 'bar')
|
||||
self.assertEqual(len(l),1)
|
||||
self.assertEqual(len(l), 1)
|
||||
self.assertEqual(l[0], 'foobar')
|
||||
|
||||
def test_write(self):
|
||||
@ -156,7 +157,7 @@ class ConfigTest(utils.RepoTestCase):
|
||||
self.assertTrue('this.that' in config)
|
||||
config.set_multivar('this.that', '^.*beer', 'fool')
|
||||
l = config.get_multivar('this.that', 'fool')
|
||||
self.assertEqual(len(l),1)
|
||||
self.assertEqual(len(l), 1)
|
||||
self.assertEqual(l[0], 'fool')
|
||||
config.set_multivar('this.that', 'foo.*', '123456')
|
||||
l = config.get_multivar('this.that', 'foo.*')
|
||||
|
@ -31,6 +31,7 @@ from __future__ import absolute_import
|
||||
from __future__ import unicode_literals
|
||||
import unittest
|
||||
import pygit2
|
||||
from pygit2 import GIT_DIFF_INCLUDE_UNMODIFIED
|
||||
from . import utils
|
||||
|
||||
|
||||
@ -57,26 +58,26 @@ index 297efb8..0000000
|
||||
"""
|
||||
|
||||
DIFF_INDEX_EXPECTED = [
|
||||
'staged_changes',
|
||||
'staged_changes_file_deleted',
|
||||
'staged_changes_file_modified',
|
||||
'staged_delete',
|
||||
'staged_delete_file_modified',
|
||||
'staged_new',
|
||||
'staged_new_file_deleted',
|
||||
'staged_new_file_modified'
|
||||
'staged_changes',
|
||||
'staged_changes_file_deleted',
|
||||
'staged_changes_file_modified',
|
||||
'staged_delete',
|
||||
'staged_delete_file_modified',
|
||||
'staged_new',
|
||||
'staged_new_file_deleted',
|
||||
'staged_new_file_modified'
|
||||
]
|
||||
|
||||
DIFF_WORKDIR_EXPECTED = [
|
||||
'file_deleted',
|
||||
'modified_file',
|
||||
'staged_changes',
|
||||
'staged_changes_file_deleted',
|
||||
'staged_changes_file_modified',
|
||||
'staged_delete',
|
||||
'staged_delete_file_modified',
|
||||
'subdir/deleted_file',
|
||||
'subdir/modified_file'
|
||||
'file_deleted',
|
||||
'modified_file',
|
||||
'staged_changes',
|
||||
'staged_changes_file_deleted',
|
||||
'staged_changes_file_modified',
|
||||
'staged_delete',
|
||||
'staged_delete_file_modified',
|
||||
'subdir/deleted_file',
|
||||
'subdir/modified_file'
|
||||
]
|
||||
|
||||
class DiffDirtyTest(utils.DirtyRepoTestCase):
|
||||
@ -120,7 +121,7 @@ class DiffTest(utils.BareRepoTestCase):
|
||||
# self.assertIsNotNone is 2.7 only
|
||||
self.assertTrue(diff is not None)
|
||||
# self.assertIn is 2.7 only
|
||||
self.assertTrue(('a','a', 3, 0) in diff.changes['files'])
|
||||
self.assertTrue(('a', 'a', 3, 0) in diff.changes['files'])
|
||||
self.assertEqual(2, len(diff.changes['hunks']))
|
||||
|
||||
hunk = diff.changes['hunks'][0]
|
||||
@ -140,7 +141,7 @@ class DiffTest(utils.BareRepoTestCase):
|
||||
commit_d = self.repo[COMMIT_SHA1_4]
|
||||
|
||||
for opt in [pygit2.GIT_DIFF_IGNORE_WHITESPACE,
|
||||
pygit2.GIT_DIFF_IGNORE_WHITESPACE_EOL]:
|
||||
pygit2.GIT_DIFF_IGNORE_WHITESPACE_EOL]:
|
||||
diff = commit_c.tree.diff(commit_d.tree, opt)
|
||||
self.assertTrue(diff is not None)
|
||||
self.assertEqual(0, len(diff.changes.get('hunks', list())))
|
||||
@ -163,13 +164,13 @@ class DiffTest(utils.BareRepoTestCase):
|
||||
self.assertTrue(diff_c is not None)
|
||||
|
||||
# assertIn / assertNotIn are 2.7 only
|
||||
self.assertTrue(('b','b', 3, 0) not in diff_b.changes['files'])
|
||||
self.assertTrue(('b','b', 3, 0) in diff_c.changes['files'])
|
||||
self.assertTrue(('b', 'b', 3, 0) not in diff_b.changes['files'])
|
||||
self.assertTrue(('b', 'b', 3, 0) in diff_c.changes['files'])
|
||||
|
||||
diff_b.merge(diff_c)
|
||||
|
||||
# assertIn is 2.7 only
|
||||
self.assertTrue(('b','b', 3, 0) in diff_b.changes['files'])
|
||||
self.assertTrue(('b', 'b', 3, 0) in diff_b.changes['files'])
|
||||
|
||||
hunk = diff_b.changes['hunks'][1]
|
||||
self.assertEqual(hunk.old_start, 1)
|
||||
@ -201,16 +202,19 @@ class DiffTest(utils.BareRepoTestCase):
|
||||
commit_a = self.repo[COMMIT_SHA1_1]
|
||||
commit_b = self.repo[COMMIT_SHA1_2]
|
||||
diff = commit_a.tree.diff(commit_b.tree)
|
||||
self.assertEqual(diff.changes['hunks'][0].old_oid, '7f129fd57e31e935c6d60a0c794efe4e6927664b')
|
||||
self.assertEqual(diff.changes['hunks'][0].new_oid, 'af431f20fc541ed6d5afede3e2dc7160f6f01f16')
|
||||
hunk = diff.changes['hunks'][0]
|
||||
self.assertEqual(hunk.old_oid,
|
||||
'7f129fd57e31e935c6d60a0c794efe4e6927664b')
|
||||
self.assertEqual(hunk.new_oid,
|
||||
'af431f20fc541ed6d5afede3e2dc7160f6f01f16')
|
||||
|
||||
def test_find_similar(self):
|
||||
commit_a = self.repo[COMMIT_SHA1_4]
|
||||
commit_b = self.repo[COMMIT_SHA1_5]
|
||||
|
||||
|
||||
#~ Must pass GIT_DIFF_INCLUDE_UNMODIFIED if you expect to emulate
|
||||
#~ --find-copies-harder during rename transformion...
|
||||
diff = commit_a.tree.diff(commit_b.tree, pygit2.GIT_DIFF_INCLUDE_UNMODIFIED)
|
||||
diff = commit_a.tree.diff(commit_b.tree, GIT_DIFF_INCLUDE_UNMODIFIED)
|
||||
self.assertFalse(('a', 'a.copy', 5, 100) in diff.changes['files'])
|
||||
diff.find_similar(pygit2.GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED)
|
||||
self.assertTrue(('a', 'a.copy', 5, 100) in diff.changes['files'])
|
||||
|
@ -49,7 +49,8 @@ class ReferencesTest(utils.RepoTestCase):
|
||||
['refs/heads/i18n', 'refs/heads/master'])
|
||||
|
||||
# We add a symbolic reference
|
||||
repo.create_reference('refs/tags/version1','refs/heads/master', symbolic=True)
|
||||
repo.create_reference('refs/tags/version1', 'refs/heads/master',
|
||||
symbolic=True)
|
||||
self.assertEqual(sorted(repo.listall_references()),
|
||||
['refs/heads/i18n', 'refs/heads/master',
|
||||
'refs/tags/version1'])
|
||||
@ -144,8 +145,9 @@ class ReferencesTest(utils.RepoTestCase):
|
||||
def test_reload(self):
|
||||
name = 'refs/tags/version1'
|
||||
|
||||
ref = self.repo.create_reference(name, "refs/heads/master", symbolic=True)
|
||||
ref2 = self.repo.lookup_reference(name)
|
||||
repo = self.repo
|
||||
ref = repo.create_reference(name, "refs/heads/master", symbolic=True)
|
||||
ref2 = repo.lookup_reference(name)
|
||||
ref.delete()
|
||||
self.assertEqual(ref2.name, name)
|
||||
self.assertRaises(KeyError, ref2.reload)
|
||||
@ -197,7 +199,8 @@ class ReferencesTest(utils.RepoTestCase):
|
||||
|
||||
# try to create existing symbolic reference
|
||||
self.assertRaises(ValueError, self.repo.create_reference,
|
||||
'refs/tags/beta','refs/heads/master', symbolic=True)
|
||||
'refs/tags/beta', 'refs/heads/master',
|
||||
symbolic=True)
|
||||
|
||||
# try to create existing symbolic reference with force
|
||||
reference = self.repo.create_reference('refs/tags/beta',
|
||||
|
@ -49,7 +49,7 @@ class RepositoryTest(utils.RepoTestCase):
|
||||
self.assertEqual(name, remote.name)
|
||||
self.assertEqual(url, remote.url)
|
||||
|
||||
self.assertRaises(ValueError,self.repo.create_remote, *(name, url))
|
||||
self.assertRaises(ValueError, self.repo.create_remote, *(name, url))
|
||||
|
||||
|
||||
def test_remote_rename(self):
|
||||
@ -79,7 +79,7 @@ class RepositoryTest(utils.RepoTestCase):
|
||||
self.assertEqual(REMOTE_FETCHSPEC_SRC, remote.fetchspec[0])
|
||||
self.assertEqual(REMOTE_FETCHSPEC_DST, remote.fetchspec[1])
|
||||
|
||||
new_fetchspec = ('refs/foo/*','refs/remotes/foo/*')
|
||||
new_fetchspec = ('refs/foo/*', 'refs/remotes/foo/*')
|
||||
remote.fetchspec = new_fetchspec
|
||||
self.assertEqual(new_fetchspec[0], remote.fetchspec[0])
|
||||
self.assertEqual(new_fetchspec[1], remote.fetchspec[1])
|
||||
|
@ -35,8 +35,8 @@ import tempfile
|
||||
import os
|
||||
from os.path import join, realpath
|
||||
|
||||
from pygit2 import GIT_OBJ_ANY, GIT_OBJ_BLOB, GIT_OBJ_COMMIT, init_repository, \
|
||||
discover_repository, Commit, hashfile
|
||||
from pygit2 import GIT_OBJ_ANY, GIT_OBJ_BLOB, GIT_OBJ_COMMIT
|
||||
from pygit2 import init_repository, discover_repository, Commit, hashfile
|
||||
import pygit2
|
||||
|
||||
from . import utils
|
||||
@ -260,7 +260,7 @@ class InitRepositoryTest(utils.NoRepoTestCase):
|
||||
class DiscoverRepositoryTest(utils.NoRepoTestCase):
|
||||
def test_discover_repo(self):
|
||||
repo = init_repository(self._temp_dir, False)
|
||||
subdir = os.path.join(self._temp_dir, "test1","test2")
|
||||
subdir = os.path.join(self._temp_dir, "test1", "test2")
|
||||
os.makedirs(subdir)
|
||||
self.assertEqual(repo.path, discover_repository(subdir))
|
||||
|
||||
|
@ -44,23 +44,23 @@ log = [
|
||||
'acecd5ea2924a4b900e7e149496e1f4b57976e51']
|
||||
|
||||
REVLOGS = [
|
||||
('Nico von Geyso','checkout: moving from i18n to master'),
|
||||
('Nico von Geyso','commit: added bye.txt and new'),
|
||||
('Nico von Geyso','checkout: moving from master to i18n'),
|
||||
('J. David Ibañez', 'merge i18n: Merge made by recursive.'),
|
||||
('J. David Ibañez', 'commit: Add .gitignore file'),
|
||||
('J. David Ibañez', 'checkout: moving from i18n to master'),
|
||||
('J. David Ibañez', 'commit: Say hello in French'),
|
||||
('J. David Ibañez', 'commit: Say hello in Spanish'),
|
||||
('J. David Ibañez', 'checkout: moving from master to i18n'),
|
||||
('J. David Ibañez', 'commit (initial): First commit')
|
||||
('Nico von Geyso', 'checkout: moving from i18n to master'),
|
||||
('Nico von Geyso', 'commit: added bye.txt and new'),
|
||||
('Nico von Geyso', 'checkout: moving from master to i18n'),
|
||||
('J. David Ibañez', 'merge i18n: Merge made by recursive.'),
|
||||
('J. David Ibañez', 'commit: Add .gitignore file'),
|
||||
('J. David Ibañez', 'checkout: moving from i18n to master'),
|
||||
('J. David Ibañez', 'commit: Say hello in French'),
|
||||
('J. David Ibañez', 'commit: Say hello in Spanish'),
|
||||
('J. David Ibañez', 'checkout: moving from master to i18n'),
|
||||
('J. David Ibañez', 'commit (initial): First commit')
|
||||
]
|
||||
|
||||
|
||||
class RevlogTestTest(utils.RepoTestCase):
|
||||
def test_log(self):
|
||||
ref = self.repo.lookup_reference('HEAD')
|
||||
for i,entry in enumerate(ref.log()):
|
||||
for i, entry in enumerate(ref.log()):
|
||||
self.assertEqual(entry.committer.name, REVLOGS[i][0])
|
||||
self.assertEqual(entry.message, REVLOGS[i][1])
|
||||
|
||||
|
@ -45,8 +45,8 @@ class SignatureTest(NoRepoTestCase):
|
||||
self.assertEqual(signature.name.encode(encoding), signature._name)
|
||||
|
||||
def test_ascii(self):
|
||||
self.assertRaises(
|
||||
UnicodeEncodeError, Signature, 'Foo Ibáñez', 'foo@example.com')
|
||||
self.assertRaises(UnicodeEncodeError,
|
||||
Signature, 'Foo Ibáñez', 'foo@example.com')
|
||||
|
||||
def test_latin1(self):
|
||||
encoding = 'iso-8859-1'
|
||||
|
@ -36,38 +36,38 @@ from . import utils
|
||||
|
||||
|
||||
EXPECTED = {
|
||||
"current_file": pygit2.GIT_STATUS_CURRENT,
|
||||
"file_deleted": pygit2.GIT_STATUS_WT_DELETED,
|
||||
"modified_file": pygit2.GIT_STATUS_WT_MODIFIED,
|
||||
"new_file": pygit2.GIT_STATUS_WT_NEW,
|
||||
"current_file": pygit2.GIT_STATUS_CURRENT,
|
||||
"file_deleted": pygit2.GIT_STATUS_WT_DELETED,
|
||||
"modified_file": pygit2.GIT_STATUS_WT_MODIFIED,
|
||||
"new_file": pygit2.GIT_STATUS_WT_NEW,
|
||||
|
||||
"staged_changes": pygit2.GIT_STATUS_INDEX_MODIFIED,
|
||||
"staged_changes_file_deleted": pygit2.GIT_STATUS_INDEX_MODIFIED |
|
||||
pygit2.GIT_STATUS_WT_DELETED,
|
||||
"staged_changes_file_modified": pygit2.GIT_STATUS_INDEX_MODIFIED |
|
||||
pygit2.GIT_STATUS_WT_MODIFIED,
|
||||
"staged_changes": pygit2.GIT_STATUS_INDEX_MODIFIED,
|
||||
"staged_changes_file_deleted": pygit2.GIT_STATUS_INDEX_MODIFIED |
|
||||
pygit2.GIT_STATUS_WT_DELETED,
|
||||
"staged_changes_file_modified": pygit2.GIT_STATUS_INDEX_MODIFIED |
|
||||
pygit2.GIT_STATUS_WT_MODIFIED,
|
||||
|
||||
"staged_delete": pygit2.GIT_STATUS_INDEX_DELETED,
|
||||
"staged_delete_file_modified": pygit2.GIT_STATUS_INDEX_DELETED |
|
||||
pygit2.GIT_STATUS_WT_NEW,
|
||||
"staged_new": pygit2.GIT_STATUS_INDEX_NEW,
|
||||
"staged_delete": pygit2.GIT_STATUS_INDEX_DELETED,
|
||||
"staged_delete_file_modified": pygit2.GIT_STATUS_INDEX_DELETED |
|
||||
pygit2.GIT_STATUS_WT_NEW,
|
||||
"staged_new": pygit2.GIT_STATUS_INDEX_NEW,
|
||||
|
||||
"staged_new_file_deleted": pygit2.GIT_STATUS_INDEX_NEW |
|
||||
pygit2.GIT_STATUS_WT_DELETED,
|
||||
"staged_new_file_modified": pygit2.GIT_STATUS_INDEX_NEW |
|
||||
pygit2.GIT_STATUS_WT_MODIFIED,
|
||||
"staged_new_file_deleted": pygit2.GIT_STATUS_INDEX_NEW |
|
||||
pygit2.GIT_STATUS_WT_DELETED,
|
||||
"staged_new_file_modified": pygit2.GIT_STATUS_INDEX_NEW |
|
||||
pygit2.GIT_STATUS_WT_MODIFIED,
|
||||
|
||||
"subdir/current_file": pygit2.GIT_STATUS_CURRENT,
|
||||
"subdir/deleted_file": pygit2.GIT_STATUS_WT_DELETED,
|
||||
"subdir/modified_file": pygit2.GIT_STATUS_WT_MODIFIED,
|
||||
"subdir/new_file": pygit2.GIT_STATUS_WT_NEW,
|
||||
"subdir/current_file": pygit2.GIT_STATUS_CURRENT,
|
||||
"subdir/deleted_file": pygit2.GIT_STATUS_WT_DELETED,
|
||||
"subdir/modified_file": pygit2.GIT_STATUS_WT_MODIFIED,
|
||||
"subdir/new_file": pygit2.GIT_STATUS_WT_NEW,
|
||||
}
|
||||
|
||||
class StatusTest(utils.DirtyRepoTestCase):
|
||||
|
||||
def test_status(self):
|
||||
"""
|
||||
For every file in the status, check that the flags are correct.
|
||||
For every file in the status, check that the flags are correct.
|
||||
"""
|
||||
git_status = self.repo.status()
|
||||
for filepath, status in git_status.items():
|
||||
|
@ -63,7 +63,8 @@ def rmtree(path):
|
||||
So we implement our own version of rmtree to address this issue.
|
||||
"""
|
||||
if os.path.exists(path):
|
||||
shutil.rmtree(path, onerror=lambda func, path, e: force_rm_handle(func, path, e))
|
||||
onerror = lambda func, path, e: force_rm_handle(func, path, e)
|
||||
shutil.rmtree(path, onerror=onerror)
|
||||
|
||||
|
||||
class NoRepoTestCase(unittest.TestCase):
|
||||
|
Loading…
x
Reference in New Issue
Block a user