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