Paul Mackerras <[email protected]> writes:
> Hi Thomas,
>
> On Wed, Jul 31, 2013 at 03:17:41PM +0200, Thomas Rast wrote:
>> Jens Lehmann <[email protected]> writes:
>>
>> > Am 29.07.2013 21:37, schrieb Thomas Rast:
>> >> Thomas Rast <[email protected]> writes:
>> >>
>> >>> Thomas Rast <[email protected]> writes:
>> >>>
>> >>>> Now that git log -L has hit master, I figure it's time to discuss the
>> >>>> corresponding change to gitk.
[...]
>
> One thing I worry about is having gitk storing in memory not just the
> history graph but also all the diffs (assuming I have understood
> correctly what you're doing). Gitk's memory consumption is already
> pretty large. However, I can't see an alternative at this point.
I don't think there is one. log -L is pretty much an "all or nothing"
thing at this point. I suppose if we really found that the diffs are
regularly too big to be manageable for gitk, we could invent a porcelain
mode where 'log -L' just prints the detected commits and corresponding
line ranges, and then have a new option to diff-tree to let it again
filter that range.
But note that ordinary 'git log -L' also buffers the entire set of diffs
within less. The memory consumption of gitk to hold the same diffs in
memory should be only a small factor of what less uses in the same
scenario. Furthermore, users will typically ask for a small region of
code (one function, or some such), so the diffs themselves are usually
quite small, nowhere near the size of the full commit diffs.
>> Unfortunately it's turning out to be harder than I hoped. gitk runs the
>> arguments through git-rev-parse, which only knows that -n gets an
>> unstuck argument. Consequently, gitk accepts an unstuck -n but only
>> stuck forms of -S and -G.
>
> Excuse my ignorance, but what do you mean by "stuck" vs. "unstuck"?
Whether the option value is a separate argument in argv, or directly
stuck to the option.
stuck: gitk -L:foo:main.c
unstuck: gitk -L :foo:main.c
Existing gitk chokes on 'gitk -S foo', but works with 'git -Sfoo'.
--
Thomas Rast
trast@{inf,student}.ethz.ch
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html