From: Andreas Ericsson Date: Thu, 07 Dec 2006 15:28:12 GMT Subject: Re: Fast access git-rev-list output: some OS knowledge required Message-ID: <4578330C.9070208@op5.se> In-Reply-To: Johannes Schindelin wrote: > Hi, > > On Thu, 7 Dec 2006, Andreas Ericsson wrote: > >> Shawn Pearce wrote: >>> Perhaps there is some fast IPC API supported by Qt that you could use >>> to run the revision listing outside of the main UI process, to >>> eliminate the bottlenecks you are seeing and remove the problems noted >>> above? One that doesn't involve reading from a pipe I mean... >>> >> Why not just fork() + exec() and read from the filedescriptor? You can >> up the output buffer of the forked program to something suitable, which >> means the OS will cache it for you until you copy it to a buffer in qgit >> (i.e., read from the descriptor). > > Could somebody remind me why different processes are needed? I thought > that the revision machinery should be used directly, by linking to > libgit.a... > You wrote: --%<--%<--%<-- Because, depending on what you do, the revision machinery is not reentrable. For example, if you filter by filename, the history is rewritten in-memory to simulate a history where just that filename was tracked, and nothing else. These changes are not cleaned up after calling the internal revision machinery. --%<--%<--%<-- When I wrote the above suggestion, I hadn't read the posts following the email where I cut this text from (where Linus said "we can add a 'reset' thingie to the revision walking machinery" and Marco replied with some more questions). -- Andreas Ericsson andreas.ericsson@op5.se OP5 AB www.op5.se