Pull request: Use userdiff configuration

Jonathon Mah me at jonathonmah.com
Sun Apr 10 10:56:04 CEST 2011


Lars,

On 2011-04-07, at 03:30, Lars Hjemli wrote:

> On Tue, Apr 5, 2011 at 13:38, Jonathon Mah <me at jonathonmah.com> wrote:
> 
>> So I have some patches to cgit to respect both the userdiff xfuncname and
>> textconv.
> 
> Thanks. The changes looks good, but I'm a bit concerned about textconv
> security. Maybe this feature should be disabled by default?

I rethought things a bit a decided to change my approach. Along with trying to minimize configuration options, while I was adding the textconv support in the first place, I had some serious performance issues. The textconv filter took around 2 seconds per file, so diff pages stalled for a while. But much worse, I initially tried "enable-log-linecount" on, and the line stats were holding up the log page for ~40 seconds. So once my textconv filter was good, I turned on "cachetextconv" in the git config.

I've re-written the patch so cgit will use the cached textconv blobs. If a cached blob is not available for at least one side of a diff, the diff will instead be of the files on disk. This way, cgit will never execute an external handler, and so will never be held up by a slow one.

If repo owners want textconv, they can turn on cachetextconv and set a post-receive hook to update the cache.

(A not-particularly-efficient, but trivial post-receive hook is:)
while read oldrev newrev ref; do
	git log -u $newrev &>/dev/null
done



Jonathon Mah
me at JonathonMah.com






More information about the CGit mailing list