mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-11 16:34:33 +00:00
Merge pull request #2637 from libgit2/cmn/global-init
Rename git_threads_ to git_libgit2_
This commit is contained in:
commit
057126c6d3
@ -122,3 +122,7 @@ v0.21 + 1
|
|||||||
* The fetch behavior of remotes with autotag set to GIT_REMOTE_DOWNLOAD_TAGS_ALL
|
* The fetch behavior of remotes with autotag set to GIT_REMOTE_DOWNLOAD_TAGS_ALL
|
||||||
has been changed to match git 1.9.0 and later. In this mode, libgit2 now
|
has been changed to match git 1.9.0 and later. In this mode, libgit2 now
|
||||||
fetches all tags in addition to whatever else needs to be fetched.
|
fetches all tags in addition to whatever else needs to be fetched.
|
||||||
|
|
||||||
|
* git_threads_init() and git_threads_shutdown() have been renamed to
|
||||||
|
git_libgit2_init() and git_libgit2_shutdown() to better explain what
|
||||||
|
their purpose is, as it's grown to be more than just about threads.
|
||||||
|
@ -40,7 +40,7 @@ int main (int argc, char** argv)
|
|||||||
int options = 0, count = 0;
|
int options = 0, count = 0;
|
||||||
struct print_payload payload = {0};
|
struct print_payload payload = {0};
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
parse_opts(&options, &count, argc, argv);
|
parse_opts(&options, &count, argc, argv);
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ int main (int argc, char** argv)
|
|||||||
git_index_free(index);
|
git_index_free(index);
|
||||||
git_repository_free(repo);
|
git_repository_free(repo);
|
||||||
|
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ int main(int argc, char *argv[])
|
|||||||
git_blob *blob;
|
git_blob *blob;
|
||||||
git_object *obj;
|
git_object *obj;
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
parse_opts(&o, argc, argv);
|
parse_opts(&o, argc, argv);
|
||||||
if (o.M) blameopts.flags |= GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES;
|
if (o.M) blameopts.flags |= GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES;
|
||||||
@ -131,7 +131,7 @@ int main(int argc, char *argv[])
|
|||||||
git_blame_free(blame);
|
git_blame_free(blame);
|
||||||
git_repository_free(repo);
|
git_repository_free(repo);
|
||||||
|
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,7 @@ int main(int argc, char *argv[])
|
|||||||
git_object *obj = NULL;
|
git_object *obj = NULL;
|
||||||
char oidstr[GIT_OID_HEXSZ + 1];
|
char oidstr[GIT_OID_HEXSZ + 1];
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
parse_opts(&o, argc, argv);
|
parse_opts(&o, argc, argv);
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ int main(int argc, char *argv[])
|
|||||||
git_object_free(obj);
|
git_object_free(obj);
|
||||||
git_repository_free(repo);
|
git_repository_free(repo);
|
||||||
|
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -145,7 +145,7 @@ int main(int argc, char **argv)
|
|||||||
git_repository *repo;
|
git_repository *repo;
|
||||||
describe_options opts;
|
describe_options opts;
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL),
|
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL),
|
||||||
"Could not open repository", NULL);
|
"Could not open repository", NULL);
|
||||||
@ -156,7 +156,7 @@ int main(int argc, char **argv)
|
|||||||
do_describe(repo, &opts);
|
do_describe(repo, &opts);
|
||||||
|
|
||||||
git_repository_free(repo);
|
git_repository_free(repo);
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ int main(int argc, char *argv[])
|
|||||||
-1, 0, 0, GIT_DIFF_FORMAT_PATCH, NULL, NULL, "."
|
-1, 0, 0, GIT_DIFF_FORMAT_PATCH, NULL, NULL, "."
|
||||||
};
|
};
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
parse_opts(&o, argc, argv);
|
parse_opts(&o, argc, argv);
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ int main(int argc, char *argv[])
|
|||||||
git_tree_free(t2);
|
git_tree_free(t2);
|
||||||
git_repository_free(repo);
|
git_repository_free(repo);
|
||||||
|
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,10 @@ static void check_error(int error_code, const char *action)
|
|||||||
|
|
||||||
int main (int argc, char** argv)
|
int main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
// Initialize the library, this will set up any global state which libgit2 needs
|
||||||
|
// including threading and crypto
|
||||||
|
git_libgit2_init();
|
||||||
|
|
||||||
// ### Opening the Repository
|
// ### Opening the Repository
|
||||||
|
|
||||||
// There are a couple of methods for opening a repository, this being the
|
// There are a couple of methods for opening a repository, this being the
|
||||||
|
@ -46,7 +46,7 @@ int main(int argc, char *argv[])
|
|||||||
git_repository *repo = NULL;
|
git_repository *repo = NULL;
|
||||||
struct opts o = { 1, 0, 0, 0, GIT_REPOSITORY_INIT_SHARED_UMASK, 0, 0, 0 };
|
struct opts o = { 1, 0, 0, 0, GIT_REPOSITORY_INIT_SHARED_UMASK, 0, 0, 0 };
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
parse_opts(&o, argc, argv);
|
parse_opts(&o, argc, argv);
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
git_repository_free(repo);
|
git_repository_free(repo);
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ int main(int argc, char *argv[])
|
|||||||
git_commit *commit = NULL;
|
git_commit *commit = NULL;
|
||||||
git_pathspec *ps = NULL;
|
git_pathspec *ps = NULL;
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
/** Parse arguments and set up revwalker. */
|
/** Parse arguments and set up revwalker. */
|
||||||
|
|
||||||
@ -180,7 +180,7 @@ int main(int argc, char *argv[])
|
|||||||
git_pathspec_free(ps);
|
git_pathspec_free(ps);
|
||||||
git_revwalk_free(s.walker);
|
git_revwalk_free(s.walker);
|
||||||
git_repository_free(s.repo);
|
git_repository_free(s.repo);
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ int main(int argc, char **argv)
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
for (i = 0; commands[i].name != NULL; ++i) {
|
for (i = 0; commands[i].name != NULL; ++i) {
|
||||||
if (!strcmp(argv[1], commands[i].name))
|
if (!strcmp(argv[1], commands[i].name))
|
||||||
|
@ -24,7 +24,7 @@ int main (int argc, char **argv)
|
|||||||
git_oid oid;
|
git_oid oid;
|
||||||
char buf[GIT_OID_HEXSZ+1];
|
char buf[GIT_OID_HEXSZ+1];
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL), "opening repository", NULL);
|
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL), "opening repository", NULL);
|
||||||
check_lg2(git_revwalk_new(&walk, repo), "allocating revwalk", NULL);
|
check_lg2(git_revwalk_new(&walk, repo), "allocating revwalk", NULL);
|
||||||
@ -36,7 +36,7 @@ int main (int argc, char **argv)
|
|||||||
printf("%s\n", buf);
|
printf("%s\n", buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,13 +29,13 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
struct parse_state ps = {0};
|
struct parse_state ps = {0};
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
parse_opts(&ps, argc, argv);
|
parse_opts(&ps, argc, argv);
|
||||||
|
|
||||||
check_lg2(parse_revision(&ps), "Parsing", NULL);
|
check_lg2(parse_revision(&ps), "Parsing", NULL);
|
||||||
|
|
||||||
git_repository_free(ps.repo);
|
git_repository_free(ps.repo);
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,7 @@ int main (int argc, char** argv)
|
|||||||
char out[GIT_OID_HEXSZ+1];
|
char out[GIT_OID_HEXSZ+1];
|
||||||
out[GIT_OID_HEXSZ] = '\0';
|
out[GIT_OID_HEXSZ] = '\0';
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
if (argc > 2)
|
if (argc > 2)
|
||||||
fatal("usage: showindex [<repo-dir>]", NULL);
|
fatal("usage: showindex [<repo-dir>]", NULL);
|
||||||
@ -64,7 +64,7 @@ int main (int argc, char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
git_index_free(index);
|
git_index_free(index);
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ int main(int argc, char *argv[])
|
|||||||
git_status_list *status;
|
git_status_list *status;
|
||||||
struct opts o = { GIT_STATUS_OPTIONS_INIT, "." };
|
struct opts o = { GIT_STATUS_OPTIONS_INIT, "." };
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
o.statusopt.show = GIT_STATUS_SHOW_INDEX_AND_WORKDIR;
|
o.statusopt.show = GIT_STATUS_SHOW_INDEX_AND_WORKDIR;
|
||||||
o.statusopt.flags = GIT_STATUS_OPT_INCLUDE_UNTRACKED |
|
o.statusopt.flags = GIT_STATUS_OPT_INCLUDE_UNTRACKED |
|
||||||
@ -135,7 +135,7 @@ show_status:
|
|||||||
}
|
}
|
||||||
|
|
||||||
git_repository_free(repo);
|
git_repository_free(repo);
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -300,7 +300,7 @@ int main(int argc, char **argv)
|
|||||||
tag_action action;
|
tag_action action;
|
||||||
tag_state state;
|
tag_state state;
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
|
|
||||||
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL),
|
check_lg2(git_repository_open_ext(&repo, ".", 0, NULL),
|
||||||
"Could not open repository", NULL);
|
"Could not open repository", NULL);
|
||||||
@ -313,7 +313,7 @@ int main(int argc, char **argv)
|
|||||||
action(&state);
|
action(&state);
|
||||||
|
|
||||||
git_repository_free(repo);
|
git_repository_free(repo);
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
#include "git2/status.h"
|
#include "git2/status.h"
|
||||||
#include "git2/submodule.h"
|
#include "git2/submodule.h"
|
||||||
#include "git2/tag.h"
|
#include "git2/tag.h"
|
||||||
#include "git2/threads.h"
|
#include "git2/global.h"
|
||||||
#include "git2/transport.h"
|
#include "git2/transport.h"
|
||||||
#include "git2/tree.h"
|
#include "git2/tree.h"
|
||||||
#include "git2/types.h"
|
#include "git2/types.h"
|
||||||
|
38
include/git2/global.h
Normal file
38
include/git2/global.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) the libgit2 contributors. All rights reserved.
|
||||||
|
*
|
||||||
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
||||||
|
* a Linking Exception. For full terms see the included COPYING file.
|
||||||
|
*/
|
||||||
|
#ifndef INCLUDE_git_global_h__
|
||||||
|
#define INCLUDE_git_global_h__
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
|
||||||
|
GIT_BEGIN_DECL
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init the global state
|
||||||
|
*
|
||||||
|
* This function must the called before any other libgit2 function in
|
||||||
|
* order to set up global state and threading.
|
||||||
|
*
|
||||||
|
* This function may be called multiple times.
|
||||||
|
*
|
||||||
|
* @return 0 or an error code
|
||||||
|
*/
|
||||||
|
GIT_EXTERN(int) git_libgit2_init(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shutdown the global state
|
||||||
|
*
|
||||||
|
* Clean up the global state and threading context after calling it as
|
||||||
|
* many times as `git_libgit2_init()` was called.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
GIT_EXTERN(void) git_libgit2_shutdown(void);
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
GIT_END_DECL
|
||||||
|
#endif
|
||||||
|
|
@ -18,32 +18,6 @@
|
|||||||
*/
|
*/
|
||||||
GIT_BEGIN_DECL
|
GIT_BEGIN_DECL
|
||||||
|
|
||||||
/**
|
|
||||||
* Init the threading system.
|
|
||||||
*
|
|
||||||
* If libgit2 has been built with GIT_THREADS
|
|
||||||
* on, this function must be called once before
|
|
||||||
* any other library functions.
|
|
||||||
*
|
|
||||||
* If libgit2 has been built without GIT_THREADS
|
|
||||||
* support, this function is a no-op.
|
|
||||||
*
|
|
||||||
* @return 0 or an error code
|
|
||||||
*/
|
|
||||||
GIT_EXTERN(int) git_threads_init(void);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shutdown the threading system.
|
|
||||||
*
|
|
||||||
* If libgit2 has been built with GIT_THREADS
|
|
||||||
* on, this function must be called before shutting
|
|
||||||
* down the library.
|
|
||||||
*
|
|
||||||
* If libgit2 has been built without GIT_THREADS
|
|
||||||
* support, this function is a no-op.
|
|
||||||
*/
|
|
||||||
GIT_EXTERN(void) git_threads_shutdown(void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the OpenSSL locks
|
* Initialize the OpenSSL locks
|
||||||
*
|
*
|
||||||
|
21
src/global.c
21
src/global.c
@ -9,6 +9,7 @@
|
|||||||
#include "hash.h"
|
#include "hash.h"
|
||||||
#include "sysdir.h"
|
#include "sysdir.h"
|
||||||
#include "git2/threads.h"
|
#include "git2/threads.h"
|
||||||
|
#include "git2/global.h"
|
||||||
#include "thread-utils.h"
|
#include "thread-utils.h"
|
||||||
|
|
||||||
|
|
||||||
@ -133,7 +134,7 @@ int git_openssl_set_locking(void)
|
|||||||
* Handle the global state with TLS
|
* Handle the global state with TLS
|
||||||
*
|
*
|
||||||
* If libgit2 is built with GIT_THREADS enabled,
|
* If libgit2 is built with GIT_THREADS enabled,
|
||||||
* the `git_threads_init()` function must be called
|
* the `git_libgit2_init()` function must be called
|
||||||
* before calling any other function of the library.
|
* before calling any other function of the library.
|
||||||
*
|
*
|
||||||
* This function allocates a TLS index (using pthreads
|
* This function allocates a TLS index (using pthreads
|
||||||
@ -146,7 +147,7 @@ int git_openssl_set_locking(void)
|
|||||||
* allocated on each thread.
|
* allocated on each thread.
|
||||||
*
|
*
|
||||||
* Before shutting down the library, the
|
* Before shutting down the library, the
|
||||||
* `git_threads_shutdown` method must be called to free
|
* `git_libgit2_shutdown` method must be called to free
|
||||||
* the previously reserved TLS index.
|
* the previously reserved TLS index.
|
||||||
*
|
*
|
||||||
* If libgit2 is built without threading support, the
|
* If libgit2 is built without threading support, the
|
||||||
@ -156,9 +157,9 @@ int git_openssl_set_locking(void)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* `git_threads_init()` allows subsystems to perform global setup,
|
* `git_libgit2_init()` allows subsystems to perform global setup,
|
||||||
* which may take place in the global scope. An explicit memory
|
* which may take place in the global scope. An explicit memory
|
||||||
* fence exists at the exit of `git_threads_init()`. Without this,
|
* fence exists at the exit of `git_libgit2_init()`. Without this,
|
||||||
* CPU cores are free to reorder cache invalidation of `_tls_init`
|
* CPU cores are free to reorder cache invalidation of `_tls_init`
|
||||||
* before cache invalidation of the subsystems' newly written global
|
* before cache invalidation of the subsystems' newly written global
|
||||||
* state.
|
* state.
|
||||||
@ -185,7 +186,7 @@ static int synchronized_threads_init(void)
|
|||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_threads_init(void)
|
int git_libgit2_init(void)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error = 0;
|
||||||
|
|
||||||
@ -210,7 +211,7 @@ static void synchronized_threads_shutdown(void)
|
|||||||
git_mutex_free(&git__mwindow_mutex);
|
git_mutex_free(&git__mwindow_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void git_threads_shutdown(void)
|
void git_libgit2_shutdown(void)
|
||||||
{
|
{
|
||||||
/* Enter the lock */
|
/* Enter the lock */
|
||||||
while (InterlockedCompareExchange(&_mutex, 1, 0)) { Sleep(0); }
|
while (InterlockedCompareExchange(&_mutex, 1, 0)) { Sleep(0); }
|
||||||
@ -272,14 +273,14 @@ static void init_once(void)
|
|||||||
GIT_MEMORY_BARRIER;
|
GIT_MEMORY_BARRIER;
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_threads_init(void)
|
int git_libgit2_init(void)
|
||||||
{
|
{
|
||||||
pthread_once(&_once_init, init_once);
|
pthread_once(&_once_init, init_once);
|
||||||
git_atomic_inc(&git__n_inits);
|
git_atomic_inc(&git__n_inits);
|
||||||
return init_error;
|
return init_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
void git_threads_shutdown(void)
|
void git_libgit2_shutdown(void)
|
||||||
{
|
{
|
||||||
void *ptr = NULL;
|
void *ptr = NULL;
|
||||||
pthread_once_t new_once = PTHREAD_ONCE_INIT;
|
pthread_once_t new_once = PTHREAD_ONCE_INIT;
|
||||||
@ -320,7 +321,7 @@ git_global_st *git__global_state(void)
|
|||||||
|
|
||||||
static git_global_st __state;
|
static git_global_st __state;
|
||||||
|
|
||||||
int git_threads_init(void)
|
int git_libgit2_init(void)
|
||||||
{
|
{
|
||||||
static int ssl_inited = 0;
|
static int ssl_inited = 0;
|
||||||
|
|
||||||
@ -333,7 +334,7 @@ int git_threads_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void git_threads_shutdown(void)
|
void git_libgit2_shutdown(void)
|
||||||
{
|
{
|
||||||
/* Shut down any subsystems that have global state */
|
/* Shut down any subsystems that have global state */
|
||||||
if (0 == git_atomic_dec(&git__n_inits))
|
if (0 == git_atomic_dec(&git__n_inits))
|
||||||
|
@ -236,7 +236,7 @@ int git_hash_ctx_init(git_hash_ctx *ctx)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* When compiled with GIT_THREADS, the global hash_prov data is
|
* When compiled with GIT_THREADS, the global hash_prov data is
|
||||||
* initialized with git_threads_init. Otherwise, it must be initialized
|
* initialized with git_libgit2_init. Otherwise, it must be initialized
|
||||||
* at first use.
|
* at first use.
|
||||||
*/
|
*/
|
||||||
if (hash_prov.type == INVALID && (error = git_hash_global_init()) < 0)
|
if (hash_prov.type == INVALID && (error = git_hash_global_init()) < 0)
|
||||||
|
@ -10,7 +10,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
clar_test_init(argc, argv);
|
clar_test_init(argc, argv);
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
cl_sandbox_set_search_path_defaults();
|
cl_sandbox_set_search_path_defaults();
|
||||||
|
|
||||||
/* Run the test suite */
|
/* Run the test suite */
|
||||||
@ -19,7 +19,7 @@ int main(int argc, char *argv[])
|
|||||||
clar_test_shutdown();
|
clar_test_shutdown();
|
||||||
|
|
||||||
giterr_clear();
|
giterr_clear();
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
@ -27,11 +27,11 @@ void test_threads_basic__multiple_init(void)
|
|||||||
{
|
{
|
||||||
git_repository *nested_repo;
|
git_repository *nested_repo;
|
||||||
|
|
||||||
git_threads_init();
|
git_libgit2_init();
|
||||||
cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git")));
|
cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git")));
|
||||||
git_repository_free(nested_repo);
|
git_repository_free(nested_repo);
|
||||||
|
|
||||||
git_threads_shutdown();
|
git_libgit2_shutdown();
|
||||||
cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git")));
|
cl_git_pass(git_repository_open(&nested_repo, cl_fixture("testrepo.git")));
|
||||||
git_repository_free(nested_repo);
|
git_repository_free(nested_repo);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user