mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 19:04:05 +00:00
Removing unneeded code duplication in ls-remote.c
This commit is contained in:
parent
ac2e7dc6fb
commit
d6d523486c
@ -14,31 +14,6 @@ static int show_ref__cb(git_remote_head *head, void *payload)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int use_unnamed(git_repository *repo, const char *url)
|
|
||||||
{
|
|
||||||
git_remote *remote = NULL;
|
|
||||||
int error;
|
|
||||||
|
|
||||||
// Create an instance of a remote from the URL. The transport to use
|
|
||||||
// is detected from the URL
|
|
||||||
error = git_remote_create_inmemory(&remote, repo, NULL, url);
|
|
||||||
if (error < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
// When connecting, the underlying code needs to know wether we
|
|
||||||
// want to push or fetch
|
|
||||||
error = git_remote_connect(remote, GIT_DIRECTION_FETCH);
|
|
||||||
if (error < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
// With git_remote_ls we can retrieve the advertised heads
|
|
||||||
error = git_remote_ls(remote, &show_ref__cb, NULL);
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
git_remote_free(remote);
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int use_remote(git_repository *repo, char *name)
|
static int use_remote(git_repository *repo, char *name)
|
||||||
{
|
{
|
||||||
git_remote *remote = NULL;
|
git_remote *remote = NULL;
|
||||||
@ -46,8 +21,12 @@ static int use_remote(git_repository *repo, char *name)
|
|||||||
|
|
||||||
// Find the remote by name
|
// Find the remote by name
|
||||||
error = git_remote_load(&remote, repo, name);
|
error = git_remote_load(&remote, repo, name);
|
||||||
if (error < 0)
|
if (error < 0) {
|
||||||
goto cleanup;
|
error = git_remote_create_inmemory(&remote, repo, NULL, name);
|
||||||
|
if (error < 0)
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
error = git_remote_connect(remote, GIT_DIRECTION_FETCH);
|
error = git_remote_connect(remote, GIT_DIRECTION_FETCH);
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
@ -72,12 +51,7 @@ int ls_remote(git_repository *repo, int argc, char **argv)
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If there's a ':' in the name, assume it's an URL */
|
error = use_remote(repo, argv[1]);
|
||||||
if (strchr(argv[1], ':') != NULL) {
|
|
||||||
error = use_unnamed(repo, argv[1]);
|
|
||||||
} else {
|
|
||||||
error = use_remote(repo, argv[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user