List for cgit developers and users
 help / color / mirror / Atom feed
From: peter at lekensteyn.nl (Peter Wu)
Subject: Error when searching for a bogus range
Date: Tue, 10 Jun 2014 23:07:20 +0200	[thread overview]
Message-ID: <1776285.4k9HZBe05R@al> (raw)
In-Reply-To: <20140610205939.GA28807@serenity.lan>

On Tuesday 10 June 2014 21:59:39 John Keeping wrote:
> On Tue, Jun 10, 2014 at 02:05:14PM -0400, Konstantin Ryabitsev wrote:
> > cgit-0.10.1-1.el6 (EPEL version)
> > 
> > If you search for a bogus range string here:
> > 
> > http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/
> > 
> > Using something like "range" and "qwerty123456", it returns an "Internal
> > Server Error" and the following in the logs:
> > 
> > > [Tue Jun 10 17:45:32 2014] [error] [client 172.21.1.6] fatal: ambiguous argument 'qwerty123456': unknown revision or path not in the working tree., referer: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
> > > [Tue Jun 10 17:45:32 2014] [error] [client 172.21.1.6] Use '--' to separate paths from revisions, like this:, referer: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
> > > [Tue Jun 10 17:45:32 2014] [error] [client 172.21.1.6] 'git <command> [<revision>...] -- [<file>...]', referer: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
> > > [Tue Jun 10 17:45:32 2014] [error] [client 172.21.1.6] Premature end of script headers: cgit, referer: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/
> 
> This is because we just pass the arguments straight to Git's revision
> parsing machinery which die()s if it cannot parse an argument, printing
> the above to stderr and exiting.
> 
> The patch below makes it a bit friendlier by just ignoring unhandled
> arguments, but I can't see an easy way to report errors when we can't
> parse revision arguments without losing the flexibility of supporting
> all of the revision specifiers supported by Git.

The patch looks good to me, it reduces the error to just the "fatal: ..."
message. The error can be reproduced with:

echo scan-path=. > cgitrc
CGIT_CONFIG=cgitrc PATH_INFO=/.git/log/ QUERY_STRING=qt=range\&q=foo ./cgit
(assuming .git/ in $PWD)

The accepted argument is the same as the one passed to `git rev-list`.
Unless you manually check for the possible formats (v3.15~10..v3.15,
v3.13.., ..next, foo...bar, you won't be able to catch the error (as
John noted).

Regards,
Peter

> -- >8 --
> diff --git a/ui-log.c b/ui-log.c
> index 499534c..4cb26bc 100644
> --- a/ui-log.c
> +++ b/ui-log.c
> @@ -337,16 +337,16 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern
>  	else if (commit_sort == 2)
>  		argv_array_push(&rev_argv, "--topo-order");
>  
> -	if (path) {
> -		argv_array_push(&rev_argv, "--");
> +	argv_array_push(&rev_argv, "--");
> +	if (path)
>  		argv_array_push(&rev_argv, path);
> -	}
>  
>  	init_revisions(&rev, NULL);
>  	rev.abbrev = DEFAULT_ABBREV;
>  	rev.commit_format = CMIT_FMT_DEFAULT;
>  	rev.verbose_header = 1;
>  	rev.show_root_diff = 0;
> +	rev.ignore_missing = 1;
>  	setup_revisions(rev_argv.argc, rev_argv.argv, &rev, NULL);
>  	load_ref_decorations(DECORATE_FULL_REFS);
>  	rev.show_decorations = 1;


  reply	other threads:[~2014-06-10 21:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-10 18:05 mricon
2014-06-10 20:59 ` john
2014-06-10 21:07   ` peter [this message]
2014-06-10 22:41     ` Jason
2014-06-28 13:56       ` Jason

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1776285.4k9HZBe05R@al \
    --to=cgit@lists.zx2c4.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).