* Upgrade codespell to v2.4.0
It is a lastet verison, and is needed so that I can use the inline
ignore support in a future commit.
After updating tests/pyproject.toml I ran the following commands:
```
cd tests
poetry lock --no-update
poetry install
```
I also fixed a spelling error in man/git-summary.md, which was not
caught by the old version of codespell. After updating the file I also
updated the related files by running the following commands:
```
cd man
make -C .. man/git-summary.{1,html}
```
* add git-wip and git-unwip
Updated/re-built the documentation with:
```
cd man
make -C .. man/git-unwip.{1,html}
make -C .. man/git-wip.{1,html}
make -C .. man/git-extras.{1,html}
```
* feat(git-bulk): add --no-follow-hidden flag
* docs(git-bulk): add --no-follow-hidden description
* docs(man): make ronn
* docs(git-bulk): put --no-follow-hidden at right place in usage()
* refactor(git-bulk): logic optimization
Remove unnecessary subshell
Co-authored-by: Edwin Kofler <edwin@kofler.dev>
* fix(git-bulk): bad test operator
With the Bash' regexp matching operator `=~`, we need to use the Bash
conditional expression evaluation command `[[ ]]`.
* docs(completion.zsh): add --no-follow-hidden and --no-follow-symlink
---------
Co-authored-by: Pierre Ayoub <pierre.ayoub@protonmail.com>
Co-authored-by: Edwin Kofler <edwin@kofler.dev>
* feat(git-summary): add --full-path option
* docs(git-summary): add doc for --full-path option
* docs(man): make using ronn
* docs(git-extras-completion.zsh): add --full-path option of git-summary
* feat(git-bulk): add --no-follow-symlinks flag
* docs(git-bulk): add --no-follow-symlinks description
* docs(man): make ronn
* docs(git-bulk): put --no-follow-symlinks at right place in usage()
* fix(git-bulk): use readarray for find command
1. Use `readarray` such that we can handle paths with spaces
2. Remove the unnecessary `eval`
* fix(git-bulk): fix workspace selection when cd fails
`cd` may fails for multiple reasons:
- mistake when editing `.gitconfig` manually
- previously existing workspace that have been removed
- ...
Currently, if `cd` fails, the `BulkOp` continue its execution ... in the
workspace defined in a higher directory that where the user, despite the
user specified a specific workspace (`-w`).
The user should be noticed of a failed `cd` (this is really not expected
for a valid configuration) and the operations should stop to not execute
something unexpected.
* fix(git-bulk): replace weak eval for better variable substitution
Get rid of poor `eval` syntax because they are vulnerable to command
injection, which may have unexpected side effects.
However, they enabled a useful feature: using environment variable
(*e.g.*, defined in a `.bashrc`) inside the `.gitconfig` to use dynamic
paths as `bulk` workspaces.
As such, I keep this feature possible by using the Bash's ${!VAR}
syntax, which allows to get the value of one variable using the name of
a another variable. However, arbitrary command injection is not possible
anymore.
* fix(git-bulk): missing check about empty environnement variable
* style(git-bulk): typo
* docs(Commands.md): git-bulk env var feature
* docs(man/git-bulk): git-bulk env var feature
* docs(man/git-bulk): mention .gitconfig for config storage
* style(man/git-bulk): typo
* docs(man/git-bulk): run make/ronn for .1 and .html
Fix a logic error inside the `allowedargcount()` function. This function
may be called with one or two arguments. However, no default values are
assigned to `$1` and `$2` that are used inside a numerical comparison.
Therefore, when using a bad number of arguments for the following lines:
```
listall|purge) allowedargcount 1;;
addcurrent|removeworkspace) allowedargcount 2;;
```
Then, we would get the error `[: : integer expression expected`. To fix
this, we assign the 0 default value to `$1` and `$2`, such that we
trigger the error message destined to the user without any integer error
when there is a bad number of argument and that the function is called
with only 1 argument instead of 2.
* feat: add git-continue
Also refactor `git-abort` to parse action from the called file name.
There's a promise for this in #865 but that was a long time ago.
* fix: add git-continue
address review comments, fix the script, remove unnecessary testpath
import.
* feat: Add pathspec support in git-missing
Allow to specify a path to limit the commit difference list. This
improvement allows users to focus on changes in specific directories or
files when comparing branches for missing commits.
* refactor: Improve pathspec handling in git-missing
- Change pathspec from string to array to support multiple pathspecs
- Remove unnecessary 'shift' command in argument processing loop
- Simplify git log command execution by using a single codepath
* chore: Update git-missing docs
* chore: Fix a typo in git-missing docs
* feat: add reverse option to git-brv
When there are a large amount of branches it is often useful to see the
most recent branches last as they end up closer to the prompt. This adds
a new --reverse / -r option and an environment variable to set the
default behavior (GIT_BRV_REVERSE).
* git-brv: change to git option instead of environment variable and fix typo
* wrap git option in backticks for git-brv and fix git-feature title
* update git-feature docs
* fix missing breaks in git-feature.md
* Allow `git cp` to create destination folder automatically
* Replace subshell command with builtin operation to infer DESTINATION_DIR
* Remove destination folder existence check and only create it when the path contains slash(s)
* git-feature: add configurable branch separator
Closes#1069
This allows the use of a separator other than `/` for feature or other
alias branches. While a command-line option has been provided (`-s` or
`--separator`), this will most often be used via
`git-extras.feature.separator`.
* Significant update to bin/git-feature
- Changed option parsing so that `--alias` requires an argument and will
fail with an error unless provided. Applied the same logic to
`--separator`.
- Changed `finish` parsing to capture it as a variable flag during
argument parsing.
This could be extended so that if `finish` is already true, a second
`finish` results in the word being added to the argument list.
```console
$ git feature -- finish remote
$ git feature finish finish remote
```
This has not been done because it is a bit of an inconsistent handling
for documentation purposes.
- Add handling of `--` to permit options or `finish` to be made part of
the feature branch name.
- Since `finish` is now a variable flag, simplify the name-building
logic to always use `concatargs "${argv[@]}"`. This means that
`git feature finish ...` and `git feature ...` behave the same in
terms of feature branch name building.
- Basically rewrote the man page to include better descriptions of the
options as well as adding a GIT CONFIG section and additional EXAMPLES
for the new features/behaviour.
Closes#1067
This makes the base ARCHIVE_NAME for `git-archive-file` to be the name
of the repo root directory instead of the name of the current directory.