submodule--helper: refactor resolve_relative_url() helper
Refactor the helper function to resolve a relative url, by reusing the existing `compute_submodule_clone_url()` function. `compute_submodule_clone_url()` performs the same work that `resolve_relative_url()` is doing, so we eliminate this code repetition by moving the former function's definition up, and calling it inside `resolve_relative_url()`. Signed-off-by: Atharva Raykar <raykar.ath@gmail.com> Mentored-by: Christian Couder <christian.couder@gmail.com> Mentored-by: Shourya Shukla <periperidip@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
6baf4e4da4
commit
ab6f23b751
@ -199,33 +199,46 @@ static char *relative_url(const char *remote_url,
|
||||
return strbuf_detach(&sb, NULL);
|
||||
}
|
||||
|
||||
static char *compute_submodule_clone_url(const char *rel_url, const char *up_path, int quiet)
|
||||
{
|
||||
char *remoteurl, *resolved_url;
|
||||
char *remote = get_default_remote();
|
||||
struct strbuf remotesb = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&remotesb, "remote.%s.url", remote);
|
||||
if (git_config_get_string(remotesb.buf, &remoteurl)) {
|
||||
if (!quiet)
|
||||
warning(_("could not look up configuration '%s'. "
|
||||
"Assuming this repository is its own "
|
||||
"authoritative upstream."),
|
||||
remotesb.buf);
|
||||
remoteurl = xgetcwd();
|
||||
}
|
||||
resolved_url = relative_url(remoteurl, rel_url, up_path);
|
||||
|
||||
free(remote);
|
||||
free(remoteurl);
|
||||
strbuf_release(&remotesb);
|
||||
|
||||
return resolved_url;
|
||||
}
|
||||
|
||||
static int resolve_relative_url(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
char *remoteurl = NULL;
|
||||
char *remote = get_default_remote();
|
||||
const char *up_path = NULL;
|
||||
char *res;
|
||||
const char *url;
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
|
||||
if (argc != 2 && argc != 3)
|
||||
die("resolve-relative-url only accepts one or two arguments");
|
||||
|
||||
url = argv[1];
|
||||
strbuf_addf(&sb, "remote.%s.url", remote);
|
||||
free(remote);
|
||||
|
||||
if (git_config_get_string(sb.buf, &remoteurl))
|
||||
/* the repository is its own authoritative upstream */
|
||||
remoteurl = xgetcwd();
|
||||
|
||||
if (argc == 3)
|
||||
up_path = argv[2];
|
||||
|
||||
res = relative_url(remoteurl, url, up_path);
|
||||
res = compute_submodule_clone_url(url, up_path, 1);
|
||||
puts(res);
|
||||
free(res);
|
||||
free(remoteurl);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -590,30 +603,6 @@ static int module_foreach(int argc, const char **argv, const char *prefix)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char *compute_submodule_clone_url(const char *rel_url, const char *up_path, int quiet)
|
||||
{
|
||||
char *remoteurl, *resolved_url;
|
||||
char *remote = get_default_remote();
|
||||
struct strbuf remotesb = STRBUF_INIT;
|
||||
|
||||
strbuf_addf(&remotesb, "remote.%s.url", remote);
|
||||
if (git_config_get_string(remotesb.buf, &remoteurl)) {
|
||||
if (!quiet)
|
||||
warning(_("could not look up configuration '%s'. "
|
||||
"Assuming this repository is its own "
|
||||
"authoritative upstream."),
|
||||
remotesb.buf);
|
||||
remoteurl = xgetcwd();
|
||||
}
|
||||
resolved_url = relative_url(remoteurl, rel_url, up_path);
|
||||
|
||||
free(remote);
|
||||
free(remoteurl);
|
||||
strbuf_release(&remotesb);
|
||||
|
||||
return resolved_url;
|
||||
}
|
||||
|
||||
struct init_cb {
|
||||
const char *prefix;
|
||||
unsigned int flags;
|
||||
|
Loading…
Reference in New Issue
Block a user