From 63377aad78e7efb8ebe760b8e886303b0cbb2d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 13 Sep 2014 17:30:32 +0200 Subject: [PATCH] Properly initialize the clone options libgit2 provides an initialization function to set sane defaults. Use that instead of setting the version by hand, as that's not the only thing it does. Using C.git_clone_init_options() sets the checkout strategy to SAFE, which will checkout the files after the clone, instead of the implicit NONE which we're setting by hand. This fixes #425, --- pygit2/__init__.py | 6 +++--- pygit2/decl.h | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pygit2/__init__.py b/pygit2/__init__.py index 0a901d4..6df8478 100644 --- a/pygit2/__init__.py +++ b/pygit2/__init__.py @@ -151,6 +151,9 @@ def clone_repository( d['callback'] = credentials d_handle = ffi.new_handle(d) + # Perform the initialization with the version we compiled + C.git_clone_init_options(opts, C.GIT_CLONE_OPTIONS_VERSION) + # We need to keep the ref alive ourselves checkout_branch_ref = None if branch: @@ -160,11 +163,8 @@ def clone_repository( remote_name_ref = ffi.new('char []', to_bytes(remote_name)) opts.remote_name = remote_name_ref - opts.version = 1 opts.ignore_cert_errors = ignore_cert_errors opts.bare = bare - opts.remote_callbacks.version = 1 - opts.checkout_opts.version = 1 if credentials: opts.remote_callbacks.credentials = _credentials_cb opts.remote_callbacks.payload = d_handle diff --git a/pygit2/decl.h b/pygit2/decl.h index c7b7001..b8cd9c6 100644 --- a/pygit2/decl.h +++ b/pygit2/decl.h @@ -353,6 +353,9 @@ typedef struct git_clone_options { git_signature *signature; } git_clone_options; +#define GIT_CLONE_OPTIONS_VERSION ... +int git_clone_init_options(git_clone_options *opts, unsigned int version); + int git_clone(git_repository **out, const char *url, const char *local_path,