* Darren Salt <[EMAIL PROTECTED]> [20070411 23:03]:
> If a lot of Mercurial-using projects start appearing on alioth, then
> http://hg.debian.org/hg/ is going to become (shall we say) somewhat long.
> It'd be useful to have Mercurial be able to provide partial listings when in
> multi-repository server mode - with a suitably-patched version installed
> (patch attached), http://hg.debian.org/hg/xine-lib/ would list only those
> repositories below /hg/xine-lib.
> 
> There is one minor issue: requests for images and style sheet resources are
> also relative to the given path. My patch handles this. (This probably won't
> affect alioth, which is using URLs of the form "...?static=style.css".)

I really want to have this features in hg, too.
Currently I work around it with a bit logic in hgwebdir.cgi.

Some comments on your code:

> +            if prefix > '' and not prefix.endswith('/'):

Better simply use
    if prefix and not prefix.endswith('/'):

> +                sys.stderr.write(name+"\n")
> +        sys.stderr.write (virtual + "\n")

There is some debugging code lurking around.

> +        elif virtual and virtual.find('/static/') >= 0:
> +            static = os.path.join(templater.templatepath(), 'static')
> +            fname = virtual[virtual.find('/static/')+8:]
> +            req.write(staticfile(static, fname, req) or
> +                      tmpl('error', error='%r not found' % fname))

The /static change should be separated in a separate patch, and I'm
not sure if virtual.find('/static/') isn't too greedy.

And virtual[virtual.find('/static/')+8:] looks a bit too magic, too.
(I know that '/static/' has the length 8)

> -                req.write(tmpl("notfound", repo=virtual))
> +                if req.form.has_key('static'):
> +                    static = os.path.join(templater.templatepath(), "static")
> +                    sys.stderr.write (static + "\n")
> +                    fname = req.form['static'][0]
> +                    req.write(staticfile(static, fname, req)
> +                              or tmpl("error", error="%r not found" % fname))
> +                else:
> +                    sortable = ["name", "description", "contact", 
> "lastchange"]
> +                    sortcolumn, descending = self.repos_sorted
> +                    if req.form.has_key('sort'):
> +                        sortcolumn = req.form['sort'][0]
> +                        descending = sortcolumn.startswith('-')
> +                        if descending:
> +                            sortcolumn = sortcolumn[1:]
> +                        if sortcolumn not in sortable:
> +                            sortcolumn = ""
> +
> +                    sort = [("sort_%s" % column,
> +                             "%s%s" % ((not descending and column == 
> sortcolumn)
> +                                       and "-" or "", column))
> +                            for column in sortable]
> +                    req.write(tmpl("index", entries=entries,
> +                                   sortcolumn=sortcolumn, 
> descending=descending,
> +                                   prefix=virtual, **dict(sort)))
> +                #req.write(tmpl("notfound", repo=virtual))

No need to comment out code lines, we have a revision history :)

And I haven't checked this, but these lines look like copied from
other locations in the code, so there may be code duplication here.


Some things to consider: http://hg.intevation.org/mercurial/ and
http://hg.intevation.org/mercurial/crew/ (and its siblings) are both
valid repositories. When requesting /mercurial/ the repository
should be visible, not the list of crew, tah, ...
I haven't checked what your code does here.


Finally I'd like to be able to include those two patches upstream, so
it would be good if the patches apply to http://www.selenic.com/hg/

0.9.3 is based off the stable branch: http://www.selenic.com/repo/hg-stable/

Despite my critics, many thanks for the input :)

Regards,
Thomas

-- 
[EMAIL PROTECTED] - http://intevation.de/~thomas/ - OpenPGP key: 0x5816791A
Intevation GmbH, Osnabrück - Registereintrag: Amtsgericht Osnabrück, HR B 18998
Geschäftsführer: Frank Koormann, Bernhard Reiter, Dr. Jan-Oliver Wagner

Reply via email to