[PATCH 2 of 3] hgweb: move entry-preparing code from webcommands to webutils.makeentry()

Yuya Nishihara yuya at tcha.org
Fri Nov 20 09:32:25 CST 2015


On Fri, 20 Nov 2015 23:11:20 +0800, Anton Shestakov wrote:
> On Fri, 20 Nov 2015 22:40:15 +0900
> Yuya Nishihara <yuya at tcha.org> wrote:
> 
> > On Wed, 18 Nov 2015 23:19:26 +0800, Anton Shestakov wrote:
> > > On Wed, 18 Nov 2015 23:27:18 +0900
> > > Yuya Nishihara <yuya at tcha.org> wrote:  
> > > > On Tue, 17 Nov 2015 21:33:57 +0800, Anton Shestakov wrote:  
> > > > > +    return tmpl("filerevision", **webutil.makeentry(web.repo,
> > > > > fctx, {
> > > > > +        'file': f,
> > > > > +        'path': webutil.up(f),
> > > > > +        'text': lines(),
> > > > > +        'symrev': webutil.symrevorshortnode(req, fctx),
> > > > > +        'rename': webutil.renamelink(fctx),
> > > > > +        'permissions': fctx.manifest().flags(f),
> > > > > +    }))    
> > > > 
> > > > This is minor thing, but I prefer
> > > > 
> > > >     return tmpl("filerevision",
> > > >                 file=f,
> > > >                 ...
> > > >                 **webutil.commonentry(web.repo, fctx))
> > > > 
> > > > because webutil has similar functions named xxxentry(). A good
> > > > thing of this style is that you can get TypeError if
> > > > rev=ctx.rev() is specified twice, for example.  
> > > 
> > > It might be a nice bonus, but makeentry() is supposed to first fill
> > > some defaults and then allow to override them (that happens in
> > > webutil.changelist() entry with "parent" and "child"). So sometimes
> > > you're supposed to have a duplicate key.  
> > 
> > Is it common to override the defaults? If not, we can do it explicitly
> > to show that it does change the behavior of common keywords.
> > 
> >   entry = commonentry(web.repo, ctx)
> >   entry['parent'] = ...
> >   return entry
> 
> Overriding defaults is not common, but happens in about 3 places.

Perhaps some of them can be avoided by passing fctx instead of ctx?
I didn't try it yet. If it's possible, it should be done by a separate patch.

> But
> all of the users of this function add at least one (and up to 10) more
> item to the entry, so I decided to have entry.update() in makeentry()
> as a shortcut.
> 
> OK, seeing how it's not very obvious what happens to the dict passed to
> makeentry(), let me do this your way and see if commonentry() looks
> better.

Thanks, and sorry for late reply. I found the previous email in my gmail's
spam folder.


More information about the Mercurial-devel mailing list