Rendering of README.md inline with inner tree view dirs
Andy Green
andy at warmcat.com
Wed Jun 13 03:47:38 CEST 2018
On 06/12/2018 05:31 PM, John Keeping wrote:
> On Tue, Jun 12, 2018 at 01:53:27PM +0800, Andy Green wrote:
>> On 06/11/2018 11:38 PM, John Keeping wrote:
>>> On Mon, Jun 11, 2018 at 04:05:38PM +0800, Andy Green wrote:
>> 1) I did not attempt to have it learn about suitable filenames from the
>> config yet, I just have ls_item() looking for "README.md". I saw
>> there's already a way (readme=) for the config to list them for the
>> about page... basically now tree view becomes a superset of the
>> operation of the about page; the about page content appears in tree view.
>>
>> So do you have any thoughts about just re-using that list?
>
> I think that list is refs to blobs, so you can specify something like:
>
> refs/heads/wiki:README.md
>
> but here we need base filenames to look for in the current directory, so
> it will have to be a new config variable.
OK. I added a new cgit-scope variable that appends filenames to be
considered for showing in tree view, eg,
tree-readme=README.md
>> 2) In the current patches, I allowed for ls_item to discover a
>> linked-list of files and render them later one after the other. Eg, a
>> dir of READMEs would render them like that. It's welcome or preferable
>> to just restrict it to one?
>
> My choice would be to take the first matching file, but I don't have a
> strong opinion on what is the right behaviour.
I'll leave this as a list for the first try. If it looks excessive I'll
reduce it to just the one.
>> 3) You can see on the top level of the tree, the README.md references
>>
>> <img alt="lws-overview" src="./doc-assets/lws-overview.png">
>>
>> This url format works in github. In the cgit About view, this resolves to
>>
>> /git/libwebsockets/about/doc-assets/lws-overview.png
>>
>> which also serves the right mimetype and content. So that kind of URL
>> format is useful. But when we render the same markup and relative path
>> via /tree/, it tries to show an html page containing the content.
>> That's why the picture is missing in the /tree/ view... other pictures
>> in that markup are coming with absolute URLs outside of cgit and are
>> working.
>>
>> I can have the direct content from cgit generally, but either the markup
>> needs fixing up to
>>
>> /git/libwebsockets/plain/doc-assets/lws-overview.png
>>
>> or /tree/ needs to learn to do what /about/ does.
>>
>> I'm wondering whether mmd2html might grow an environment var to know the
>> base part for URLS that want to direct-render from cgit. Or if better
>> to follow what /about/ did in /tree/.
>
> Making tree do this will break the normal use of tree unless we add some
> extra query parameter or path element. Given that, I think teaching the
> renderer to use a path to /about/ is the right thing to do.
OK. Unfortunately I don't know python very well. It looks like the
markdown python library is able to be told to use extensions that are
capable to do this
https://python-markdown.github.io/extensions/api/
from the md2html wrapper. But I don't know enough python to do it.
It's a shame, because in-tree assets correctly follow the ref context
being viewed, eg, if you look at a v2 branch you see v2 pngs, master you
see master pngs etc.
I'll "solve" this part for now by changing the README to use external URLs.
> Does that affect the render mode patches as well? (This is a genuine
> question, it's been a while since I wrote that code and I don't remember
> testing files with embedded assets.)
Not sure what you are asking here... what's happening is the markup to
be rendered has a relative URL in its un-rendered form. The patches
didn't generate it, it's a relative URL in the blob we pulled out from
the repo to be rendered.
The only guy who knows how to understand there is a relative URL there
is the renderer app, like md2html, not the patches that arrange for it
to be called.
If you mean your series implies a /render/ or something, I don't know, I
only use it from /tree/.
>> 4) Looking at read_sha1_file() in print_object(), I can't immediately
>> see who frees that. Running cgit from the commandline, with valgrind,
>> he seems to leak some things. Since it's a cgi, the policy is we don't
>> worry too much about that, or I just miss the idea about where it's freed?
>
> We don't generally worry about it too much, although it looks like
> several other callers of read_sha1_file() do free the buffer. Since
> it's easy to fit in here, it's probably worth freeing it at the end of
> print_object().
I audited all uses of it and fixed missing frees in ui-tree and ui-blame.
I'll check it over and post the series here shortly.
-Andy
>
> John
>
More information about the CGit
mailing list