- Ranges with 3 dots would always fail, because the non-greedy
expansion %..(.|)* in __git_committish_range_first would only
remove '..' and never three dots. 'a...b' would end up in 'a.'.
Use ${${1%..*}%.} instead.
- Use a similar approach for __git_committish_range_last.
- Wrap them in another expansion to replace empty results with 'HEAD'.
Git man-page states omitted range ending are being replaced with
HEAD. This rule has to be followed to make completions like
'git log foo.. -- <tab>' work properly.
- Add an additional check to make sure none of the extracted first/last
parts contain additional '..' in invalied ranges such as 'a..b..c'.
This gets rid of the 'TODO:' and ideally saves a few unneded
calls to git rev-parse.
Shell functions are strictly ASCII for maximum portability.
Other files within the distribution may contain UTF-8 characters.
Exception for test files: where they need single character input
with the top bit set, ISO-8859-X is used (X doesn't matter as
we don't need the Euro).
commit: '--null' is documented
relink: '-h,--help' are never documented for subcommands but always exist
verify-tag: '-v,--verbose' are documented with updated description
diff: '--cumulative' is deprecated -> remove
To avoid side effects, reposition the _arguments call in _sh for the zsh
special case. Document the side effects so avoided, and clean up the
_arguments documentation a bit along the way.
While limiting the completion to __git_changed-in-index_files
makes perfect sense for "git diff", it is wrong to use for
"git rm", because it prevents it from completing files present in
HEAD. Giving --cached to git rm is supposed to
"just remove it from the index, keep the working tree copy"
and is in no way related to the file needing to be
modified in the index in the first place.
diff options:
--cumulative is deprecated --> remove
-G / -S: reword -S to emphase the difference to -G
revision options:
--abbrev: reword, to emphase the --abbrev-commit requirement
this is used in git 1.8's
git checkout <branch>
as a shorthand for
git checkout -b <branch> --track <remote>/<branch>
in case <branch> exists on exactly one remote and is not a local branch