On Mon, Jul 08, 2019 at 09:55:00PM -0700, Junio C Hamano wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > > > Heiko Voigt <hvoigt@xxxxxxxxxx> writes: > > > >> In commit 4d5e1b1319 ("gitk: Show detached HEAD if --all is specified", > >> 2014-09-09) the intention was to have detached HEAD shown when the --all > >> argument is given. > > > > The "do we have --all?" test added by that old commit is not quite > > satisfying in the first place. E.g. we do not check if there is a > > double-dash before it. This change also relies on an ancient design > > mistake of allowing non-dashed options before a dashed one, adding > > more to dissatisfaction by making a future change to correct the > > design mistake harder. > > Actually, I do not think this patch is a good idea. > [...] > > As the code is _already_ finding the _exact_ location on the command > line where "--all" appears, I think you can go one step further and > make sure you insert the "HEAD" immediately after "--all", as that > exactly matches what you (and the ancient 4d5e1b1319) are trying to > achieve: pretend as if "--all" always include "HEAD", even when it > is detached. > > This is orthogonal to the question I posed in my earlier reply > (i.e. "we found --all; is it really a 'give me all refs' request > given by the user, or something else (is it an argument to another > option, like "--grep '--all'", or is it pathspec after '--'), but > assuming that we have reliably found the "--all" on the command line > the user meant as "give me all refs", I think inserting HEAD > immediately after that location would be the right solution. It is > incorrect to unconditionally append as your original example shows, > but it is equally incorrect to unconditionally prepend. Yes I agree, there are too many other use cases that my change will break. I tried to replace a hack with another quick hack, but that did not make it better. Will reply to the other mail with some more questions. Cheers Heiko