void test_network_remote_remotes__query_refspecs(void) { git_remote *remote; git_strarray array; int i; cl_git_pass(git_remote_create_with_fetchspec(&remote, _repo, "query", "git://github.com/libgit2/libgit2", NULL)); git_remote_free(remote); for (i = 0; i < 3; i++) { cl_git_pass(git_remote_add_fetch(_repo, "query", fetch_refspecs[i])); cl_git_pass(git_remote_add_push(_repo, "query", push_refspecs[i])); } cl_git_pass(git_remote_lookup(&remote, _repo, "query")); cl_git_pass(git_remote_get_fetch_refspecs(&array, remote)); for (i = 0; i < 3; i++) { cl_assert_equal_s(fetch_refspecs[i], array.strings[i]); } git_strarray_free(&array); cl_git_pass(git_remote_get_push_refspecs(&array, remote)); for (i = 0; i < 3; i++) { cl_assert_equal_s(push_refspecs[i], array.strings[i]); } git_strarray_free(&array); git_remote_free(remote); git_remote_delete(_repo, "test"); }
int git_remote_dup(git_remote **dest, git_remote *source) { int error = 0; git_strarray refspecs = { 0 }; git_remote *remote = git__calloc(1, sizeof(git_remote)); GITERR_CHECK_ALLOC(remote); if (source->name != NULL) { remote->name = git__strdup(source->name); GITERR_CHECK_ALLOC(remote->name); } if (source->url != NULL) { remote->url = git__strdup(source->url); GITERR_CHECK_ALLOC(remote->url); } if (source->pushurl != NULL) { remote->pushurl = git__strdup(source->pushurl); GITERR_CHECK_ALLOC(remote->pushurl); } remote->transport_cb = source->transport_cb; remote->transport_cb_payload = source->transport_cb_payload; remote->repo = source->repo; remote->download_tags = source->download_tags; remote->check_cert = source->check_cert; remote->update_fetchhead = source->update_fetchhead; if (git_vector_init(&remote->refs, 32, NULL) < 0 || git_vector_init(&remote->refspecs, 2, NULL) < 0 || git_vector_init(&remote->active_refspecs, 2, NULL) < 0) { error = -1; goto cleanup; } if ((error = git_remote_get_fetch_refspecs(&refspecs, source)) < 0 || (error = git_remote_set_fetch_refspecs(remote, &refspecs)) < 0) goto cleanup; git_strarray_free(&refspecs); if ((error = git_remote_get_push_refspecs(&refspecs, source)) < 0 || (error = git_remote_set_push_refspecs(remote, &refspecs)) < 0) goto cleanup; *dest = remote; cleanup: git_strarray_free(&refspecs); if (error < 0) git__free(remote); return error; }
void test_network_remote_remote__git_remote_create_with_fetchspec(void) { git_remote *remote; git_strarray array; cl_git_pass(git_remote_create_with_fetchspec(&remote, _repo, "test-new", "git://github.com/libgit2/libgit2", "+refs/*:refs/*")); git_remote_get_fetch_refspecs(&array, remote); cl_assert_equal_s("+refs/*:refs/*", array.strings[0]); git_remote_free(remote); }
PyObject * Remote_fetch_refspecs__get__(Remote *self) { int err; git_strarray refspecs; PyObject *new_list; err = git_remote_get_fetch_refspecs(&refspecs, self->remote); if (err != GIT_OK) return Error_set(err); new_list = get_pylist_from_git_strarray(&refspecs); git_strarray_free(&refspecs); return new_list; }
emacs_value egit_remote_get_refspecs(emacs_env *env, emacs_value _remote, emacs_value dir) { EGIT_ASSERT_REMOTE(_remote); git_remote *remote = EGIT_EXTRACT(_remote); git_strarray out = {NULL, 0}; int retval; if (EM_EQ(dir, em_fetch)) retval = git_remote_get_fetch_refspecs(&out, remote); else if (EM_EQ(dir, em_push)) retval = git_remote_get_push_refspecs(&out, remote); else { em_signal_wrong_value(env, dir); return em_nil; } EGIT_CHECK_ERROR(retval); EGIT_RET_STRARRAY(out); }
static VALUE rb_git_remote_refspecs(VALUE self, git_direction direction) { git_remote *remote; int error = 0; git_strarray refspecs; VALUE rb_refspec_array; Data_Get_Struct(self, git_remote, remote); if (direction == GIT_DIRECTION_FETCH) error = git_remote_get_fetch_refspecs(&refspecs, remote); else error = git_remote_get_push_refspecs(&refspecs, remote); rugged_exception_check(error); rb_refspec_array = rugged_strarray_to_rb_ary(&refspecs); git_strarray_free(&refspecs); return rb_refspec_array; }
void test_network_remote_remotes__dup(void) { git_strarray array; git_remote *dup; cl_git_pass(git_remote_dup(&dup, _remote)); cl_assert_equal_s(git_remote_name(dup), git_remote_name(_remote)); cl_assert_equal_s(git_remote_url(dup), git_remote_url(_remote)); cl_assert_equal_s(git_remote_pushurl(dup), git_remote_pushurl(_remote)); cl_git_pass(git_remote_get_fetch_refspecs(&array, _remote)); cl_assert_equal_i(1, (int)array.count); cl_assert_equal_s("+refs/heads/*:refs/remotes/test/*", array.strings[0]); git_strarray_free(&array); cl_git_pass(git_remote_get_push_refspecs(&array, _remote)); cl_assert_equal_i(0, (int)array.count); git_strarray_free(&array); git_remote_free(dup); }