[RFC] Using gitrevisions :/search style with other operators
From: Kevin Ballard <hidden>
Date: 2016-06-15 22:49:59
Most of the ways to refer to a git revision can be combined, e.g. I can type
something silly like
HEAD~2^^2^2~4^{tree}
and this will work as expected.
There is one operator that doesn't allow this at all, and that's the commit
message search (e.g. :/foo). Every character after the :/ is taken to be
part of the regular expression. This is rather unfortunate as it prevents me
from doing something like :/foo^ to refer to the parent of the matching commit.
Does anybody have any opinions on changing this operator? My suggestion would
be to treat a second / as a termination of the pattern and allow operators
(such as ^ or ~<n>) to occur at that point. This would look like
:/Merge branch 'foo'/^
If you need a / in your message then you can just escape it with a backslash.
A second change to consider is a syntax to specify that you want the 2nd
(or nth) match rather than the first. This could be done like
:/foo/2
unless someone has a better idea.
And finally, I'd love to be able to specify the ref to search from. The current
behavior is to find the earliest matching commit on any ref, but it seems
I should be able to type something like
git merge 'origin/pu:/jh\/notes-merge/^2'
in order to grab the jh/notes-merge topic branch from origin/pu and merge
it into HEAD. Currently trying to type something like master:/test will
treat /test as a file path on master, which is something that will never
resolve to a real file due to the leading slash.
Comments/suggestions/critiques are welcome.
-Kevin Ballard