On Tue, Aug 06, 2019 at 08:14:59PM +0200, SZEDER Gábor wrote: > On Tue, Aug 06, 2019 at 01:38:17PM -0400, Jeff King wrote: > > Nothing about "--" is changed by my series; it will still stop option > > interpretation in rev-list and in other commands. But as before, > > rev-list (and other Git commands that use the revision.c parser) use it > > to separate revisions and pathspecs. That's unlike how most other > > programs use "--", but that ship sailed for Git in 2005. > > I'd like to draw attention to the oddball 'git filter-branch' command, > which uses '--' as a separator between 'filter-branch' and 'rev-list' > options. Will it still work with this new option? I think it will, > but not sure. Good question. Certainly "--" will work as it did before, since the code here only changes behavior when it sees --end-of-options. filter-branch doesn't use any of our parseopt infrastructure itself, so it won't understand the new option itself. I.e., this won't work[1]: git filter-branch --end-of-options -this-is-a-branch-name But since it passes rev-list options as-is, this does successfully pass the name to rev-list: git filter-branch -- --end-of-options -this-is-a-branch-name However, filter-branch itself seems to do some magic of its own with the rev-list options, and will try to filter HEAD in that case. So I think it needs further work to cover all cases correctly. -Peff [1] I think the first one there would work if filter-branch actually used "rev-parse --parseopt". E.g.: git rev-parse --parseopt -- --foo --end-of-options --bar <<-\EOF cmd -- foo an option bar another option EOF yields: set -- --foo -- '--bar'