From: Thomas Rast <trast@inf•ethz.ch>
To: Paul Mackerras <paulus@samba•org>
Cc: Jens Lehmann <Jens.Lehmann@web•de>, <git@vger•kernel.org>
Subject: Re: [PATCH gitk 0/4] gitk support for git log -L
Date: Mon, 19 Aug 2013 10:21:38 +0200 [thread overview]
Message-ID: <874namay5p.fsf@linux-k42r.v.cablecom.net> (raw)
In-Reply-To: <20130818115456.GA6772@iris.ozlabs.ibm.com> (Paul Mackerras's message of "Sun, 18 Aug 2013 21:54:57 +1000")
Paul Mackerras <paulus@samba•org> writes:
> Hi Thomas,
>
> On Wed, Jul 31, 2013 at 03:17:41PM +0200, Thomas Rast wrote:
>> Jens Lehmann <Jens.Lehmann@web•de> writes:
>>
>> > Am 29.07.2013 21:37, schrieb Thomas Rast:
>> >> Thomas Rast <trast@inf•ethz.ch> writes:
>> >>
>> >>> Thomas Rast <trast@inf•ethz.ch> 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
next prev parent reply other threads:[~2013-08-19 8:21 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-09 19:44 [PATCH gitk 0/4] gitk support for git log -L Thomas Rast
2013-06-09 19:44 ` [PATCH gitk 1/4] gitk: refactor per-line part of getblobdiffline and its support Thomas Rast
2013-06-09 19:44 ` [PATCH gitk 2/4] gitk: split out diff part in $commitinfo Thomas Rast
2013-06-09 19:44 ` [PATCH gitk 3/4] gitk: support showing the gathered inline diffs Thomas Rast
2013-06-09 19:44 ` [PATCH gitk 4/4] gitk: recognize -L option Thomas Rast
2013-07-23 15:19 ` [PATCH gitk 0/4] gitk support for git log -L Thomas Rast
2013-07-29 19:37 ` Thomas Rast
2013-07-29 20:07 ` Jens Lehmann
2013-07-31 13:17 ` Thomas Rast
2013-08-18 11:54 ` Paul Mackerras
2013-08-19 8:21 ` Thomas Rast [this message]
2013-08-19 17:30 ` Junio C Hamano
2013-10-13 6:31 ` Thomas Rast
2013-10-14 5:25 ` Jonathan Nieder
2013-10-20 16:57 ` [PATCH] Documentation: revamp gitk(1) Thomas Rast
2013-10-29 7:20 ` [PATCH v2 0/7] gitk -L Thomas Rast
2013-10-29 7:20 ` [PATCH v2 1/7] gitk: support -G option from the command line Thomas Rast
2013-10-30 0:52 ` Junio C Hamano
2013-10-30 6:30 ` Thomas Rast
2013-10-30 16:42 ` Junio C Hamano
2013-10-29 7:20 ` [PATCH v2 2/7] gitk: refactor per-line part of getblobdiffline and its support Thomas Rast
2013-10-29 7:20 ` [PATCH v2 3/7] gitk: split out diff part in $commitinfo Thomas Rast
2013-10-29 7:20 ` [PATCH v2 4/7] gitk: support showing the gathered inline diffs Thomas Rast
2013-10-29 7:20 ` [PATCH v2 5/7] gitk: recognize -L option Thomas Rast
2013-10-29 7:20 ` [PATCH v2 6/7] Documentation: put blame/log -L in sticked form Thomas Rast
2013-10-30 1:11 ` Junio C Hamano
2013-10-30 6:29 ` Thomas Rast
2013-10-30 17:09 ` Junio C Hamano
2013-10-30 18:59 ` Thomas Rast
2013-10-30 19:37 ` Junio C Hamano
2013-11-16 17:37 ` [PATCH v3 gitk 0/5] gitk -L Thomas Rast
2013-11-16 17:37 ` [PATCH v3 gitk 1/5] gitk: support -G option from the command line Thomas Rast
2013-11-16 17:37 ` [PATCH v3 gitk 2/5] gitk: refactor per-line part of getblobdiffline and its support Thomas Rast
2013-11-16 17:37 ` [PATCH v3 gitk 3/5] gitk: split out diff part in $commitinfo Thomas Rast
2013-11-16 17:37 ` [PATCH v3 gitk 4/5] gitk: support showing the gathered inline diffs Thomas Rast
2013-11-16 17:37 ` [PATCH v3 gitk 5/5] gitk: recognize -L option Thomas Rast
2013-12-01 22:25 ` [PATCH v3 gitk 0/5] gitk -L Paul Mackerras
2013-11-16 17:37 ` [PATCH v3 0/3] Documentation: stuck arguments and gitk log -L Thomas Rast
2013-11-16 17:37 ` [PATCH v3 1/3] commit-tree: use prefixcmp instead of memcmp(..., N) Thomas Rast
2013-11-16 17:37 ` [PATCH v3 2/3] Documentation: convert to --option=arg form where possible Thomas Rast
2013-11-16 17:37 ` [PATCH v3 3/3] Documentation/gitk: document -L option Thomas Rast
2013-10-29 7:20 ` [PATCH v2 7/7] " Thomas Rast
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874namay5p.fsf@linux-k42r.v.cablecom.net \
--to=trast@inf$(echo .)ethz.ch \
--cc=Jens.Lehmann@web$(echo .)de \
--cc=git@vger$(echo .)kernel.org \
--cc=paulus@samba$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox