* [PATCH] clear error message for clone a gitweb URL
@ 2006-11-08 7:25 Liu Yubao
2006-11-08 20:42 ` Junio C Hamano
0 siblings, 1 reply; 3+ messages in thread
From: Liu Yubao @ 2006-11-08 7:25 UTC (permalink / raw)
To: git
When clone a gitweb URL, git reports "Can't lock ref", it's not clear for users,
this patch adds clear error message for this case.
diff --git a/fetch.c b/fetch.c
index c426c04..40c5183 100644
--- a/fetch.c
+++ b/fetch.c
@@ -266,6 +266,14 @@ int pull(int targets, char **target, con
if (!write_ref || !write_ref[i])
continue;
+ if (*write_ref[i] == '\0') {
+ if (strncmp(write_ref_log_details, "http", 4) == 0)
+ error("Can't feed empty ref, seems you are fetching from a gitweb URL, "
+ "check it in web browser for git URL.");
+ else
+ error("Can't feed empty ref");
+ goto unlock_and_fail;
+ }
lock[i] = lock_ref_sha1(write_ref[i], NULL);
if (!lock[i]) {
error("Can't lock ref %s", write_ref[i]);
diff --git a/git-clone.sh b/git-clone.sh
index 3f006d1..c8274e0 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -55,6 +55,10 @@ Perhaps git-update-server-info needs to
else
tname=$name
fi
+ if [ -z "$tname" -o -z "$name" ]; then
+ die "Cannot feed empty ref or commit-id, seems you are fetching
+from a gitweb URL, check it in web browser for git URL."
+ fi
git-http-fetch -v -a -w "$tname" "$name" "$1/" || exit 1
done <"$clone_tmp/refs"
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] clear error message for clone a gitweb URL
2006-11-08 7:25 [PATCH] clear error message for clone a gitweb URL Liu Yubao
@ 2006-11-08 20:42 ` Junio C Hamano
2006-11-09 1:49 ` Liu Yubao
0 siblings, 1 reply; 3+ messages in thread
From: Junio C Hamano @ 2006-11-08 20:42 UTC (permalink / raw)
To: Liu Yubao; +Cc: git
Liu Yubao <yubao.liu@gmail.com> writes:
> When clone a gitweb URL, git reports "Can't lock ref", it's not clear for users,
> this patch adds clear error message for this case.
>
> diff --git a/fetch.c b/fetch.c
> index c426c04..40c5183 100644
> --- a/fetch.c
> +++ b/fetch.c
> @@ -266,6 +266,14 @@ int pull(int targets, char **target, con
> if (!write_ref || !write_ref[i])
> continue;
>
> + if (*write_ref[i] == '\0') {
> + if (strncmp(write_ref_log_details, "http", 4) == 0)
> + error("Can't feed empty ref, seems you are fetching from a gitweb URL, "
> + "check it in web browser for git URL.");
> + else
> + error("Can't feed empty ref");
> + goto unlock_and_fail;
You might have got that error by feeding an URL for gitweb, but
I do not think the code, even with your additions, knows enough
to tell that the user's mistake isn't other kinds of errors.
I am afraid that it would cause the user to waste time going
wild goose chase if you say "seems you are...". The phrasing
makes it sound as if the tool _knows_ with some certainty that
it is more plausible cause of the error than other kinds, while
it certainly doesn't.
I think the reason it does not notice the breakage much earlier
is that git-clone does not notice that gitweb URL gives nonsense
to requests to "http://host/gitweb.cgi/$project/info/refs", so
your patch to git-clone.sh is probably touching the right place,
but I still feel the wording is a bit too strong and definitive
than it should be.
Perhaps...
diff --git a/git-clone.sh b/git-clone.sh
index 3f006d1..7ae69d9 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -46,15 +46,18 @@ Perhaps git-update-server-info needs to
do
name=`expr "z$refname" : 'zrefs/\(.*\)'` &&
case "$name" in
- *^*) continue;;
- esac
+ *^*) continue ;;
+ '') false ;;
+ esac &&
if test -n "$use_separate_remote" &&
branch_name=`expr "z$name" : 'zheads/\(.*\)'`
then
tname="remotes/$origin/$branch_name"
else
tname=$name
- fi
+ fi || {
+ die "info/refs has nonsense $sha1 $refname, are you pulling from the right repository URL?"
+ }
git-http-fetch -v -a -w "$tname" "$name" "$1/" || exit 1
done <"$clone_tmp/refs"
rm -fr "$clone_tmp"
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] clear error message for clone a gitweb URL
2006-11-08 20:42 ` Junio C Hamano
@ 2006-11-09 1:49 ` Liu Yubao
0 siblings, 0 replies; 3+ messages in thread
From: Liu Yubao @ 2006-11-09 1:49 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
Junio C Hamano wrote:
> Liu Yubao <yubao.liu@gmail.com> writes:
>
>> When clone a gitweb URL, git reports "Can't lock ref", it's not clear for users,
>> this patch adds clear error message for this case.
>>
>> diff --git a/fetch.c b/fetch.c
>> index c426c04..40c5183 100644
>> --- a/fetch.c
>> +++ b/fetch.c
>> @@ -266,6 +266,14 @@ int pull(int targets, char **target, con
>> if (!write_ref || !write_ref[i])
>> continue;
>>
>> + if (*write_ref[i] == '\0') {
>> + if (strncmp(write_ref_log_details, "http", 4) == 0)
>> + error("Can't feed empty ref, seems you are fetching from a gitweb URL, "
>> + "check it in web browser for git URL.");
>> + else
>> + error("Can't feed empty ref");
>> + goto unlock_and_fail;
>
> You might have got that error by feeding an URL for gitweb, but
> I do not think the code, even with your additions, knows enough
> to tell that the user's mistake isn't other kinds of errors.
>
> I am afraid that it would cause the user to waste time going
> wild goose chase if you say "seems you are...". The phrasing
> makes it sound as if the tool _knows_ with some certainty that
> it is more plausible cause of the error than other kinds, while
> it certainly doesn't.
>
I agree with you, it's not a fault of fetch.c.
> I think the reason it does not notice the breakage much earlier
> is that git-clone does not notice that gitweb URL gives nonsense
> to requests to "http://host/gitweb.cgi/$project/info/refs", so
> your patch to git-clone.sh is probably touching the right place,
> but I still feel the wording is a bit too strong and definitive
> than it should be.
>
> Perhaps...
>
> diff --git a/git-clone.sh b/git-clone.sh
> index 3f006d1..7ae69d9 100755
> --- a/git-clone.sh
> +++ b/git-clone.sh
> @@ -46,15 +46,18 @@ Perhaps git-update-server-info needs to
> do
> name=`expr "z$refname" : 'zrefs/\(.*\)'` &&
> case "$name" in
> - *^*) continue;;
> - esac
> + *^*) continue ;;
> + '') false ;;
> + esac &&
> if test -n "$use_separate_remote" &&
> branch_name=`expr "z$name" : 'zheads/\(.*\)'`
> then
> tname="remotes/$origin/$branch_name"
> else
> tname=$name
> - fi
> + fi || {
> + die "info/refs has nonsense $sha1 $refname, are you pulling from the right repository URL?"
> + }
> git-http-fetch -v -a -w "$tname" "$name" "$1/" || exit 1
> done <"$clone_tmp/refs"
> rm -fr "$clone_tmp"
>
It works well. Maybe it's better to say "info/refs has nonsense sha1($sha1)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-11-09 1:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-08 7:25 [PATCH] clear error message for clone a gitweb URL Liu Yubao
2006-11-08 20:42 ` Junio C Hamano
2006-11-09 1:49 ` Liu Yubao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).