Skip to content

Commit f9468ae

Browse files
committed
Cosmetic review
1 parent 6770825 commit f9468ae

File tree

4 files changed

+51
-47
lines changed

4 files changed

+51
-47
lines changed

pygit2/repository.py

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,30 @@ def set_head(self, target):
374374
#
375375
# Diff
376376
#
377+
def __whatever_to_tree_or_blob(self, obj):
378+
if obj is None:
379+
return None
380+
381+
# If it's a string, then it has to be valid revspec
382+
if isinstance(obj, str):
383+
obj = self.revparse_single(obj)
384+
elif isinstance(obj, Oid):
385+
obj = self[obj]
386+
387+
# First we try to get to a blob
388+
try:
389+
obj = obj.peel(Blob)
390+
except Exception:
391+
# And if that failed, try to get a tree, raising a type
392+
# error if that still doesn't work
393+
try:
394+
obj = obj.peel(Tree)
395+
except Exception:
396+
raise TypeError('unexpected "%s"' % type(obj))
397+
398+
return obj
399+
400+
377401
def diff(self, a=None, b=None, cached=False, flags=GIT_DIFF_NORMAL,
378402
context_lines=3, interhunk_lines=0):
379403
"""
@@ -433,29 +457,8 @@ def diff(self, a=None, b=None, cached=False, flags=GIT_DIFF_NORMAL,
433457
API (Tree.diff_to_tree()) directly.
434458
"""
435459

436-
def whatever_to_tree_or_blob(obj):
437-
if obj is None:
438-
return None
439-
440-
# If it's a string, then it has to be valid revspec
441-
if isinstance(obj, str):
442-
obj = self.revparse_single(obj)
443-
444-
# First we try to get to a blob
445-
try:
446-
obj = obj.peel(Blob)
447-
except Exception:
448-
# And if that failed, try to get a tree, raising a type
449-
# error if that still doesn't work
450-
try:
451-
obj = obj.peel(Tree)
452-
except Exception:
453-
raise TypeError('unexpected "%s"' % type(obj))
454-
455-
return obj
456-
457-
a = whatever_to_tree_or_blob(a)
458-
b = whatever_to_tree_or_blob(b)
460+
a = self.__whatever_to_tree_or_blob(a)
461+
b = self.__whatever_to_tree_or_blob(b)
459462

460463
opt_keys = ['flags', 'context_lines', 'interhunk_lines']
461464
opt_values = [flags, context_lines, interhunk_lines]

src/note.c

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,15 @@ Note_message__get__(Note *self)
7171
{
7272
int err;
7373

74-
if (self->note)
75-
return to_unicode(git_note_message(self->note), NULL, NULL);
76-
77-
err = git_note_read(&self->note, self->repo->repo, self->ref,
78-
&((Oid *)self->annotated_id)->oid);
79-
if (err < 0)
80-
return Error_set(err);
74+
// Lazy load
75+
if (self->note == NULL) {
76+
err = git_note_read(&self->note,
77+
self->repo->repo,
78+
self->ref,
79+
&((Oid *)self->annotated_id)->oid);
80+
if (err < 0)
81+
return Error_set(err);
82+
}
8183

8284
return to_unicode(git_note_message(self->note), NULL, NULL);
8385
}

src/repository.c

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -347,12 +347,12 @@ Repository_revparse_single(Repository *self, PyObject *py_spec)
347347

348348
/* 2- Lookup */
349349
err = git_revparse_single(&c_obj, self->repo, c_spec);
350-
351350
if (err < 0) {
352351
PyObject *err_obj = Error_set_str(err, c_spec);
353352
Py_DECREF(tspec);
354353
return err_obj;
355354
}
355+
356356
Py_DECREF(tspec);
357357

358358
return wrap_object(c_obj, self, NULL);
@@ -678,28 +678,27 @@ Repository_walk(Repository *self, PyObject *args)
678678
/* Push */
679679
if (value != Py_None) {
680680
err = py_oid_to_git_oid_expand(self->repo, value, &oid);
681-
if (err < 0) {
682-
git_revwalk_free(walk);
683-
return NULL;
684-
}
681+
if (err < 0)
682+
goto error;
685683

686684
err = git_revwalk_push(walk, &oid);
687685
if (err < 0) {
688-
git_revwalk_free(walk);
689-
return Error_set(err);
686+
Error_set(err);
687+
goto error;
690688
}
691689
}
692690

693691
py_walker = PyObject_New(Walker, &WalkerType);
694-
if (!py_walker) {
695-
git_revwalk_free(walk);
696-
return NULL;
692+
if (py_walker) {
693+
Py_INCREF(self);
694+
py_walker->repo = self;
695+
py_walker->walk = walk;
696+
return (PyObject*)py_walker;
697697
}
698698

699-
Py_INCREF(self);
700-
py_walker->repo = self;
701-
py_walker->walk = walk;
702-
return (PyObject*)py_walker;
699+
error:
700+
git_revwalk_free(walk);
701+
return NULL;
703702
}
704703

705704

src/types.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -107,10 +107,10 @@ SIMPLE_TYPE(Worktree, git_worktree, worktree)
107107
typedef struct {
108108
PyObject_HEAD
109109
Repository *repo;
110-
git_note *note;
111-
PyObject* annotated_id;
112-
PyObject* id;
113110
const char *ref;
111+
PyObject *annotated_id;
112+
PyObject *id;
113+
git_note *note;
114114
} Note;
115115

116116
typedef struct {

0 commit comments

Comments
 (0)