Browse Source

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>
maint
Uwe Kleine-König 14 years ago committed by Junio C Hamano
parent
commit
45781adb9a
  1. 11
      builtin/ls-remote.c
  2. 48
      git-parse-remote.sh

11
builtin/ls-remote.c

@ -33,6 +33,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix) @@ -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) @@ -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) @@ -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);

48
git-parse-remote.sh

@ -4,54 +4,8 @@ @@ -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…
Cancel
Save