]> git.phdru.name Git - git-wiki.git/commitdiff
Explain sticky options (git grep -O)
authorOleg Broytman <phd@phdru.name>
Sat, 22 Aug 2015 21:15:34 +0000 (00:15 +0300)
committerOleg Broytman <phd@phdru.name>
Sat, 22 Aug 2015 21:19:39 +0000 (00:19 +0300)
pep-git.txt

index 08880df1ab19290f79993c33774f683c7980266a..5a4ec8000d94ef03b5430ee43e47d44ad6d7597b 100644 (file)
@@ -751,7 +751,20 @@ works: ``git commit -av`` works perfectly, but there are situations
 when it doesn't. E.g., ``git log -p -5`` cannot be combined as ``git
 log -p5``.
 
-TODO: sticky options; example: git grep -O.
+Some options have arguments, some even have default arguments. In that
+case the argument for such option must be spelled in sticky way:
+``-Oarg``, never ``-O arg`` because for an option that has a default
+argument the latter means "use default value for option ``-O`` and
+pass ``arg`` further to the option parser". For example, ``git grep``
+has an option ``-O`` that passes found files to a program; default
+program for ``-O`` is pager (ususally ``less``), but you can use your
+editor::
+
+    $ git grep -Ovim # but not -O vim
+
+BTW, there is a difference between running ``git grep -O`` and ``git
+grep -Oless`` - in the latter case ``git grep`` passes ``+/pattern``
+option to less.
 
 TODO: bash/zsh completion, bash/zsh prompt.
 https://git.kernel.org/cgit/git/git.git/tree/contrib/completion