int git_reference_foreach( git_repository *repo, git_reference_foreach_cb callback, void *payload) { git_reference_iterator *iter; git_reference *ref; int error; if ((error = git_reference_iterator_new(&iter, repo)) < 0) return error; while (!(error = git_reference_next(&ref, iter))) { if ((error = callback(ref, payload)) != 0) { giterr_set_after_callback(error); break; } } if (error == GIT_ITEROVER) error = 0; git_reference_iterator_free(iter); return error; }
int git_reference_foreach_glob( git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload) { git_reference_iterator *iter; const char *refname; int error; if ((error = git_reference_iterator_glob_new(&iter, repo, glob)) < 0) return error; while (!(error = git_reference_next_name(&refname, iter))) { if ((error = callback(refname, payload)) != 0) { giterr_set_after_callback(error); break; } } if (error == GIT_ITEROVER) error = 0; git_reference_iterator_free(iter); return error; }
int git_reference_foreach_glob( git_repository *repo, const char *glob, git_reference_foreach_name_cb callback, void *payload) { git_reference_iterator *iter; const char *refname; int error; if (git_reference_iterator_glob_new(&iter, repo, glob) < 0) return -1; while ((error = git_reference_next_name(&refname, iter)) == 0) { if (callback(refname, payload)) { error = GIT_EUSER; goto out; } } if (error == GIT_ITEROVER) error = 0; out: git_reference_iterator_free(iter); return error; }
void git_branch_iterator_free(git_branch_iterator *_iter) { branch_iter *iter = (branch_iter *) _iter; git_reference_iterator_free(iter->iter); git__free(iter); }
int git_reference_foreach( git_repository *repo, git_reference_foreach_cb callback, void *payload) { git_reference_iterator *iter; git_reference *ref; int error; if (git_reference_iterator_new(&iter, repo) < 0) return -1; while ((error = git_reference_next(&ref, iter)) == 0) { if (callback(ref, payload)) { error = GIT_EUSER; goto out; } } if (error == GIT_ITEROVER) error = 0; out: git_reference_iterator_free(iter); return error; }
static void *iterate_refs(void *arg) { struct th_data *data = (struct th_data *) arg; git_reference_iterator *i; git_reference *ref; int count = 0, error; git_repository *repo; cl_git_thread_pass(data, git_repository_open(&repo, data->path)); do { error = git_reference_iterator_new(&i, repo); } while (error == GIT_ELOCKED); cl_git_thread_pass(data, error); for (count = 0; !git_reference_next(&ref, i); ++count) { cl_assert(ref != NULL); git_reference_free(ref); } if (g_expected > 0) cl_assert_equal_i(g_expected, count); git_reference_iterator_free(i); git_repository_free(repo); git_error_clear(); return arg; }
void git_branch_iterator_free(git_branch_iterator *_iter) { branch_iter *iter = (branch_iter *) _iter; if (iter == NULL) return; git_reference_iterator_free(iter->iter); git__free(iter); }
int git_branch_foreach( git_repository *repo, unsigned int list_flags, git_branch_foreach_cb callback, void *payload) { git_reference_iterator *iter; git_reference *ref; int error = 0; if (git_reference_iterator_new(&iter, repo) < 0) return -1; while ((error = git_reference_next(&ref, iter)) == 0) { if (list_flags & GIT_BRANCH_LOCAL && git__prefixcmp(ref->name, GIT_REFS_HEADS_DIR) == 0) { if (callback(ref->name + strlen(GIT_REFS_HEADS_DIR), GIT_BRANCH_LOCAL, payload)) { error = GIT_EUSER; } } if (list_flags & GIT_BRANCH_REMOTE && git__prefixcmp(ref->name, GIT_REFS_REMOTES_DIR) == 0) { if (callback(ref->name + strlen(GIT_REFS_REMOTES_DIR), GIT_BRANCH_REMOTE, payload)) { error = GIT_EUSER; } } git_reference_free(ref); /* check if the callback has cancelled iteration */ if (error == GIT_EUSER) break; } if (error == GIT_ITEROVER) error = 0; git_reference_iterator_free(iter); return error; }
static void *iterate_refs(void *arg) { git_reference_iterator *i; git_reference *ref; int count = 0; cl_git_pass(git_reference_iterator_new(&i, g_repo)); for (count = 0; !git_reference_next(&ref, i); ++count) { cl_assert(ref != NULL); git_reference_free(ref); } if (g_expected > 0) cl_assert_equal_i(g_expected, count); git_reference_iterator_free(i); giterr_clear(); return arg; }
static int push_glob(git_revwalk *walk, const char *glob, int hide) { int error = 0; git_buf buf = GIT_BUF_INIT; git_reference *ref; git_reference_iterator *iter; size_t wildcard; assert(walk && glob); /* refs/ is implied if not given in the glob */ if (git__prefixcmp(glob, GIT_REFS_DIR) != 0) git_buf_joinpath(&buf, GIT_REFS_DIR, glob); else git_buf_puts(&buf, glob); if (git_buf_oom(&buf)) return -1; /* If no '?', '*' or '[' exist, we append '/ *' to the glob */ wildcard = strcspn(glob, "?*["); if (!glob[wildcard]) git_buf_put(&buf, "/*", 2); if ((error = git_reference_iterator_glob_new(&iter, walk->repo, buf.ptr)) < 0) goto out; while ((error = git_reference_next(&ref, iter)) == 0) { error = push_ref(walk, git_reference_name(ref), hide, true); git_reference_free(ref); if (error < 0) break; } git_reference_iterator_free(iter); if (error == GIT_ITEROVER) error = 0; out: git_buf_free(&buf); return error; }
int luagi_reference_iterator_free( lua_State *L ) { git_reference_iterator **iter = checkreferenceiter_at( L, 1 ); git_reference_iterator_free( *iter ); return 0; }