diff options
Diffstat (limited to 'examples/network/ls-remote.c')
-rw-r--r-- | examples/network/ls-remote.c | 46 |
1 files changed, 9 insertions, 37 deletions
diff --git a/examples/network/ls-remote.c b/examples/network/ls-remote.c index 77a9f215d..02d432e8b 100644 --- a/examples/network/ls-remote.c +++ b/examples/network/ls-remote.c @@ -4,31 +4,22 @@ #include <string.h> #include "common.h" -static void show_refs(git_headarray *refs) +static int show_ref__cb(git_remote_head *head, void *payload) { - int i; - git_remote_head *head; - -// Take each head that the remote has advertised, store the string -// representation of the OID in a buffer and print it - - for(i = 0; i < refs->len; ++i){ - char oid[GIT_OID_HEXSZ + 1] = {0}; - head = refs->heads[i]; - git_oid_fmt(oid, &head->oid); - printf("%s\t%s\n", oid, head->name); - } + char oid[GIT_OID_HEXSZ + 1] = {0}; + git_oid_fmt(oid, &head->oid); + printf("%s\t%s\n", oid, head->name); + return GIT_SUCCESS; } int use_unnamed(git_repository *repo, const char *url) { git_remote *remote = NULL; - git_headarray refs; int error; // Create an instance of a remote from the URL. The transport to use // is detected from the URL - error = git_remote_new(&remote, repo, url); + error = git_remote_new(&remote, repo, url, NULL); if (error < GIT_SUCCESS) goto cleanup; @@ -39,32 +30,20 @@ int use_unnamed(git_repository *repo, const char *url) goto cleanup; // With git_remote_ls we can retrieve the advertised heads - error = git_remote_ls(remote, &refs); - if (error < GIT_SUCCESS) - goto cleanup; - - show_refs(&refs); + error = git_remote_ls(remote, &show_ref__cb, NULL); cleanup: git_remote_free(remote); - return error; } int use_remote(git_repository *repo, char *name) { git_remote *remote = NULL; - git_config *cfg = NULL; - git_headarray refs; int error; - // Load the local configuration for the repository - error = git_repository_config(&cfg, repo, NULL, NULL); - if (error < GIT_SUCCESS) - return error; - // Find the remote by name - error = git_remote_get(&remote, cfg, name); + error = git_remote_load(&remote, repo, name); if (error < GIT_SUCCESS) goto cleanup; @@ -72,15 +51,10 @@ int use_remote(git_repository *repo, char *name) if (error < GIT_SUCCESS) goto cleanup; - error = git_remote_ls(remote, &refs); - if (error < GIT_SUCCESS) - goto cleanup; - - show_refs(&refs); + error = git_remote_ls(remote, &show_ref__cb, NULL); cleanup: git_remote_free(remote); - return error; } @@ -89,8 +63,6 @@ cleanup: int ls_remote(git_repository *repo, int argc, char **argv) { - git_headarray heads; - git_remote_head *head; int error, i; /* If there's a ':' in the name, assume it's an URL */ |