submodule--helper run-update-procedure: learn --remote
Teach run-update-procedure to handle --remote instead of parsing --remote in git-submodule.sh. As a result, "git submodule--helper [print-default-remote|remote-branch]" have no more callers, so remove them. Signed-off-by: Glen Choo <chooglen@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ed9c84853e
commit
1012a5cbc3
@ -72,21 +72,6 @@ static char *get_default_remote(void)
|
|||||||
return repo_get_default_remote(the_repository);
|
return repo_get_default_remote(the_repository);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int print_default_remote(int argc, const char **argv, const char *prefix)
|
|
||||||
{
|
|
||||||
char *remote;
|
|
||||||
|
|
||||||
if (argc != 1)
|
|
||||||
die(_("submodule--helper print-default-remote takes no arguments"));
|
|
||||||
|
|
||||||
remote = get_default_remote();
|
|
||||||
if (remote)
|
|
||||||
printf("%s\n", remote);
|
|
||||||
|
|
||||||
free(remote);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int starts_with_dot_slash(const char *str)
|
static int starts_with_dot_slash(const char *str)
|
||||||
{
|
{
|
||||||
return str[0] == '.' && is_dir_sep(str[1]);
|
return str[0] == '.' && is_dir_sep(str[1]);
|
||||||
@ -2027,6 +2012,7 @@ struct update_data {
|
|||||||
unsigned int quiet;
|
unsigned int quiet;
|
||||||
unsigned int nofetch;
|
unsigned int nofetch;
|
||||||
unsigned int just_cloned;
|
unsigned int just_cloned;
|
||||||
|
unsigned int remote;
|
||||||
};
|
};
|
||||||
#define UPDATE_DATA_INIT { .update_strategy = SUBMODULE_UPDATE_STRATEGY_INIT }
|
#define UPDATE_DATA_INIT { .update_strategy = SUBMODULE_UPDATE_STRATEGY_INIT }
|
||||||
|
|
||||||
@ -2603,6 +2589,8 @@ static int run_update_procedure(int argc, const char **argv, const char *prefix)
|
|||||||
OPT_CALLBACK_F(0, "oid", &update_data.oid, N_("sha1"),
|
OPT_CALLBACK_F(0, "oid", &update_data.oid, N_("sha1"),
|
||||||
N_("SHA1 expected by superproject"), PARSE_OPT_NONEG,
|
N_("SHA1 expected by superproject"), PARSE_OPT_NONEG,
|
||||||
parse_opt_object_id),
|
parse_opt_object_id),
|
||||||
|
OPT_BOOL(0, "remote", &update_data.remote,
|
||||||
|
N_("use SHA-1 of submodule's remote tracking branch")),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -2682,23 +2670,6 @@ static const char *remote_submodule_branch(const char *path)
|
|||||||
return branch;
|
return branch;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int resolve_remote_submodule_branch(int argc, const char **argv,
|
|
||||||
const char *prefix)
|
|
||||||
{
|
|
||||||
const char *ret;
|
|
||||||
struct strbuf sb = STRBUF_INIT;
|
|
||||||
if (argc != 2)
|
|
||||||
die("submodule--helper remote-branch takes exactly one arguments, got %d", argc);
|
|
||||||
|
|
||||||
ret = remote_submodule_branch(argv[1]);
|
|
||||||
if (!ret)
|
|
||||||
die("submodule %s doesn't exist", argv[1]);
|
|
||||||
|
|
||||||
printf("%s", ret);
|
|
||||||
strbuf_release(&sb);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int push_check(int argc, const char **argv, const char *prefix)
|
static int push_check(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
struct remote *remote;
|
struct remote *remote;
|
||||||
@ -3040,6 +3011,25 @@ static int update_submodule2(struct update_data *update_data)
|
|||||||
die(_("Unable to find current revision in submodule path '%s'"),
|
die(_("Unable to find current revision in submodule path '%s'"),
|
||||||
update_data->displaypath);
|
update_data->displaypath);
|
||||||
|
|
||||||
|
if (update_data->remote) {
|
||||||
|
char *remote_name = get_default_remote_submodule(update_data->sm_path);
|
||||||
|
const char *branch = remote_submodule_branch(update_data->sm_path);
|
||||||
|
char *remote_ref = xstrfmt("refs/remotes/%s/%s", remote_name, branch);
|
||||||
|
|
||||||
|
if (!update_data->nofetch) {
|
||||||
|
if (fetch_in_submodule(update_data->sm_path, update_data->depth,
|
||||||
|
0, NULL))
|
||||||
|
die(_("Unable to fetch in submodule path '%s'"),
|
||||||
|
update_data->sm_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (resolve_gitlink_ref(update_data->sm_path, remote_ref, &update_data->oid))
|
||||||
|
die(_("Unable to find %s revision in submodule path '%s'"),
|
||||||
|
remote_ref, update_data->sm_path);
|
||||||
|
|
||||||
|
free(remote_ref);
|
||||||
|
}
|
||||||
|
|
||||||
if (!oideq(&update_data->oid, &update_data->suboid) || update_data->force)
|
if (!oideq(&update_data->oid, &update_data->suboid) || update_data->force)
|
||||||
return do_run_update_procedure(update_data);
|
return do_run_update_procedure(update_data);
|
||||||
|
|
||||||
@ -3439,11 +3429,9 @@ static struct cmd_struct commands[] = {
|
|||||||
{"foreach", module_foreach, SUPPORT_SUPER_PREFIX},
|
{"foreach", module_foreach, SUPPORT_SUPER_PREFIX},
|
||||||
{"init", module_init, SUPPORT_SUPER_PREFIX},
|
{"init", module_init, SUPPORT_SUPER_PREFIX},
|
||||||
{"status", module_status, SUPPORT_SUPER_PREFIX},
|
{"status", module_status, SUPPORT_SUPER_PREFIX},
|
||||||
{"print-default-remote", print_default_remote, 0},
|
|
||||||
{"sync", module_sync, SUPPORT_SUPER_PREFIX},
|
{"sync", module_sync, SUPPORT_SUPER_PREFIX},
|
||||||
{"deinit", module_deinit, 0},
|
{"deinit", module_deinit, 0},
|
||||||
{"summary", module_summary, SUPPORT_SUPER_PREFIX},
|
{"summary", module_summary, SUPPORT_SUPER_PREFIX},
|
||||||
{"remote-branch", resolve_remote_submodule_branch, 0},
|
|
||||||
{"push-check", push_check, 0},
|
{"push-check", push_check, 0},
|
||||||
{"absorb-git-dirs", absorb_git_dirs, SUPPORT_SUPER_PREFIX},
|
{"absorb-git-dirs", absorb_git_dirs, SUPPORT_SUPER_PREFIX},
|
||||||
{"is-active", is_active, 0},
|
{"is-active", is_active, 0},
|
||||||
|
@ -247,20 +247,6 @@ cmd_deinit()
|
|||||||
git ${wt_prefix:+-C "$wt_prefix"} submodule--helper deinit ${GIT_QUIET:+--quiet} ${force:+--force} ${deinit_all:+--all} -- "$@"
|
git ${wt_prefix:+-C "$wt_prefix"} submodule--helper deinit ${GIT_QUIET:+--quiet} ${force:+--force} ${deinit_all:+--all} -- "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
# usage: fetch_in_submodule <module_path> [<depth>] [<sha1>]
|
|
||||||
# Because arguments are positional, use an empty string to omit <depth>
|
|
||||||
# but include <sha1>.
|
|
||||||
fetch_in_submodule () (
|
|
||||||
sanitize_submodule_env &&
|
|
||||||
cd "$1" &&
|
|
||||||
if test $# -eq 3
|
|
||||||
then
|
|
||||||
echo "$3" | git fetch ${GIT_QUIET:+--quiet} --stdin ${2:+"$2"}
|
|
||||||
else
|
|
||||||
git fetch ${GIT_QUIET:+--quiet} ${2:+"$2"}
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Update each submodule path to correct revision, using clone and checkout as needed
|
# Update each submodule path to correct revision, using clone and checkout as needed
|
||||||
#
|
#
|
||||||
@ -411,21 +397,6 @@ cmd_update()
|
|||||||
just_cloned=
|
just_cloned=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -n "$remote"
|
|
||||||
then
|
|
||||||
branch=$(git submodule--helper remote-branch "$sm_path")
|
|
||||||
if test -z "$nofetch"
|
|
||||||
then
|
|
||||||
# Fetch remote before determining tracking $sha1
|
|
||||||
fetch_in_submodule "$sm_path" $depth ||
|
|
||||||
die "fatal: $(eval_gettext "Unable to fetch in submodule path '\$sm_path'")"
|
|
||||||
fi
|
|
||||||
remote_name=$(sanitize_submodule_env; cd "$sm_path" && git submodule--helper print-default-remote)
|
|
||||||
sha1=$(sanitize_submodule_env; cd "$sm_path" &&
|
|
||||||
git rev-parse --verify "${remote_name}/${branch}") ||
|
|
||||||
die "fatal: $(eval_gettext "Unable to find current \${remote_name}/\${branch} revision in submodule path '\$sm_path'")"
|
|
||||||
fi
|
|
||||||
|
|
||||||
out=$(git submodule--helper run-update-procedure \
|
out=$(git submodule--helper run-update-procedure \
|
||||||
${wt_prefix:+--prefix "$wt_prefix"} \
|
${wt_prefix:+--prefix "$wt_prefix"} \
|
||||||
${GIT_QUIET:+--quiet} \
|
${GIT_QUIET:+--quiet} \
|
||||||
@ -436,6 +407,7 @@ cmd_update()
|
|||||||
${update:+--update "$update"} \
|
${update:+--update "$update"} \
|
||||||
${prefix:+--recursive-prefix "$prefix"} \
|
${prefix:+--recursive-prefix "$prefix"} \
|
||||||
${sha1:+--oid "$sha1"} \
|
${sha1:+--oid "$sha1"} \
|
||||||
|
${remote:+--remote} \
|
||||||
"--" \
|
"--" \
|
||||||
"$sm_path")
|
"$sm_path")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user