get_remote_url(): use the same data source as ls-remote to get remote urls
The formerly implemented algorithm behaved differently to remote.c:remote_get() at least for remotes that contain a slash. While the former just assumes a/b is a path the latter checks the config for remote."a/b" first which is more reasonable. This removes the last user of git-parse-remote.sh:get_data_source(), so this function is removed. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7ed863a85a
commit
45781adb9a
@ -33,6 +33,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||
int i;
|
||||
const char *dest = NULL;
|
||||
unsigned flags = 0;
|
||||
int get_url = 0;
|
||||
int quiet = 0;
|
||||
const char *uploadpack = NULL;
|
||||
const char **pattern = NULL;
|
||||
@ -69,6 +70,10 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||
quiet = 1;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp("--get-url", arg)) {
|
||||
get_url = 1;
|
||||
continue;
|
||||
}
|
||||
usage(ls_remote_usage);
|
||||
}
|
||||
dest = arg;
|
||||
@ -94,6 +99,12 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
if (!remote->url_nr)
|
||||
die("remote %s has no configured URL", dest);
|
||||
|
||||
if (get_url) {
|
||||
printf("%s\n", *remote->url);
|
||||
return 0;
|
||||
}
|
||||
|
||||
transport = transport_get(remote, NULL);
|
||||
if (uploadpack != NULL)
|
||||
transport_set_option(transport, TRANS_OPT_UPLOADPACK, uploadpack);
|
||||
|
@ -4,54 +4,8 @@
|
||||
# this would fail in that case and would issue an error message.
|
||||
GIT_DIR=$(git rev-parse -q --git-dir) || :;
|
||||
|
||||
get_data_source () {
|
||||
case "$1" in
|
||||
*/*)
|
||||
echo ''
|
||||
;;
|
||||
.)
|
||||
echo self
|
||||
;;
|
||||
*)
|
||||
if test "$(git config --get "remote.$1.url")"
|
||||
then
|
||||
echo config
|
||||
elif test -f "$GIT_DIR/remotes/$1"
|
||||
then
|
||||
echo remotes
|
||||
elif test -f "$GIT_DIR/branches/$1"
|
||||
then
|
||||
echo branches
|
||||
else
|
||||
echo ''
|
||||
fi ;;
|
||||
esac
|
||||
}
|
||||
|
||||
get_remote_url () {
|
||||
data_source=$(get_data_source "$1")
|
||||
case "$data_source" in
|
||||
'')
|
||||
echo "$1"
|
||||
;;
|
||||
self)
|
||||
echo "$1"
|
||||
;;
|
||||
config)
|
||||
git config --get "remote.$1.url"
|
||||
;;
|
||||
remotes)
|
||||
sed -ne '/^URL: */{
|
||||
s///p
|
||||
q
|
||||
}' "$GIT_DIR/remotes/$1"
|
||||
;;
|
||||
branches)
|
||||
sed -e 's/#.*//' "$GIT_DIR/branches/$1"
|
||||
;;
|
||||
*)
|
||||
die "internal error: get-remote-url $1" ;;
|
||||
esac
|
||||
git ls-remote --get-url "$1"
|
||||
}
|
||||
|
||||
get_default_remote () {
|
||||
|
Loading…
Reference in New Issue
Block a user