Merge branch 'update-22'

This commit is contained in:
Carlos Martín Nieto
2015-04-24 15:39:30 +02:00
4 changed files with 20 additions and 7 deletions

2
.gitignore vendored
View File

@@ -5,3 +5,5 @@
rebar
ebin/
.eunit
.rebar/
_build/

View File

@@ -30,7 +30,7 @@ geef_commit_tree(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
{
ErlNifBinary bin;
geef_object *obj, *tree;
ERL_NIF_TERM term_obj;
ERL_NIF_TERM term_tree;
if (!enif_get_resource(env, argv[0], geef_object_type, (void **) &obj))
return enif_make_badarg(env);
@@ -40,13 +40,16 @@ geef_commit_tree(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[])
if (git_commit_tree((git_tree **) &tree->obj, (git_commit *) obj->obj) < 0)
return geef_error(env);
term_obj = enif_make_resource(env, obj);
enif_release_resource(obj);
term_tree = enif_make_resource(env, tree);
enif_release_resource(tree);
if (geef_oid_bin(&bin, git_object_id(tree->obj)) < 0)
return geef_oom(env);
return enif_make_tuple3(env, atoms.ok, enif_make_binary(env, &bin), term_obj);
tree->repo = obj->repo;
enif_keep_resource(tree->repo);
return enif_make_tuple3(env, atoms.ok, enif_make_binary(env, &bin), term_tree);
}
ERL_NIF_TERM

View File

@@ -31,7 +31,7 @@ geef_atoms atoms;
static int load(ErlNifEnv *env, void **priv, ERL_NIF_TERM load_info)
{
git_threads_init();
git_libgit2_init();
geef_repository_type = enif_open_resource_type(env, NULL,
"repository_type", geef_repository_free, ERL_NIF_RT_CREATE, NULL);
@@ -99,7 +99,7 @@ int upgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data, ERL_NIF_TERM
static void unload(ErlNifEnv* env, void* priv_data)
{
git_threads_shutdown();
git_libgit2_shutdown();
}
ERL_NIF_TERM

View File

@@ -7,7 +7,8 @@ repo_test_() ->
{foreach, fun start/0, fun stop/1, [fun bare_test/1, fun odb_write_test/1,
fun ref_test/1, fun index_add_test/1,
fun ref_iter_test/1, fun revparse_test/1,
fun commit_create_test/1, fun commit_message_test/1]}.
fun commit_create_test/1, fun commit_message_test/1,
fun commit_tree_test/1]}.
start() ->
{A, B, C} = now(),
@@ -111,6 +112,13 @@ commit_message_test(Repo) ->
Resp = geef_commit:message(Commit),
[?_assertMatch({ok, <<"Commit message">>}, Resp)].
commit_tree_test(Repo) ->
commit_create_test(Repo),
CommitId = geef_oid:parse("bf968373f95f8fed2a24f9d25ebf06521359c6bc"),
{ok, Commit} = geef_commit:lookup(Repo, CommitId),
Resp = geef_commit:tree(Commit),
[?_assertMatch({ok, _}, Resp)].
rm_r(Path) ->
case filelib:is_dir(Path) of
false ->