﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc	branch	changelog	apichanges	internalchanges
10411	Enhancing TracMercurial plugin to use new server-command protocol	Joongi Kim <me@…>		"I suggest to use Mercurial's new command server protocol for the TracMercurial plugin.

After recent releases of Mercurial such as 1.8 and 1.9, TracMercurial plugin did not work properly until several patches were delivered, mainly due to Mercurial's internal API changes.

Now Mercurial 1.9 provides [http://mercurial-scm.org/wiki/CommandServer a stable command-server protocol].
It is a fairly simple protocol using pipes to send length + data streams, and features the same command set to that of the console command line.

TracMercurial is for showing the timeline (prev/next and file list) and browsing the repository. It could be implemented using a few commands such as `log`, `tip`, `heads`, `tags`, `diff`, `status --change`, etc.

If we combine this enhancement with a !CachedRepository implementation (ref #8417), the performance problem will be minized.

I think this approach will significantly reduce the efforts for adapting to a new version of Mercurial, and make Trac users to escape from hassle of upgrading.

"	enhancement	new	normal	plugin - mercurial	plugin/mercurial	0.12dev	normal		mercurial command server					
