summaryrefslogtreecommitdiff
path: root/examples/network/ls-remote.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/network/ls-remote.c')
-rw-r--r--examples/network/ls-remote.c46
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 */