Commit Graph

16 Commits

Author SHA1 Message Date
Eric Nielsen 21696a4f70 [git-info] Document that flag (e) is needed
so proper expansion of ref names occurs, due to changes done in 53a3cd7.
2018-12-21 22:48:54 -05:00
Eric Nielsen 5b90c96cd1 Update modules' README.md
Stick with the following style:

* Header 1 with the module name is in `lowercase`.
* Other headers are in `Sentence case`. Common header names that should
  be consistently used are `Aliases`, `Contributing`, `Functions`,
  `Settings`, and `Zsh options`.
* The names `Zim` and `Zsh` always appear capitalized, even in the
  middle of sentences.
* Prefer

      print 'code indented with 4 spaces'

  instead of
  ```zsh
  print 'code fenced by lines with three back-ticks'
  print 'unless you want syntax highlighting'
  ```
2018-12-17 14:11:16 -05:00
Eric Nielsen 270b5d0390 [git-info] Simplify functions
Add missing local variable set.
Replace `>/dev/null 2>&1` by `&>/dev/null`.
Check return value of zstyle (if zero), instead of resulting string
value (if non-empty).
2018-10-02 20:02:06 -05:00
Eric Nielsen b7cb8d81c0 Update module README.md 2018-05-14 19:09:11 -05:00
Eric Nielsen 539f8ae8df [git] Move git-action to its own autoloadable file
instead of redefining the function constantly inside git-info.
2018-05-09 20:22:32 -05:00
Eric Nielsen 4156606e67 [git-info] Move git-info function to functions dir
since we already have a function (`coalesce`) defined and both can now
get zcompiled into the same digest file.

Also, nest the `git-action` function to the scope where it's used.
2018-01-09 09:24:01 -05:00
Eric Nielsen 9a8cb227f3 [git-info] Define integer variables with `-i`
also multiple variables can be defined with `local` at the same line.
2018-01-08 17:20:10 -05:00
Eric Nielsen 3c2730d0c4 [git-info] Remove dependency on git-dir function
from the git module.
Also now making all git calls with `command`.

Fixes #161 (again), Closes #164
2017-04-12 20:21:26 -05:00
Eric Nielsen 262f4992e9 Remove git-info dependency on is-true function
from `git` module. Actually, the function is a little bit of
over-engineering and it's currently only being used for checking the
result of `git rev-parse --is-inside-work-tree`, even in the `git`
module code.

Checking for the return code of `git rev-parse --is-inside-work-tree` is
enough. Also refactored other portions of the code where return codes
are being checked.

Fixes #161, Closes #162
2017-04-11 17:49:47 -07:00
Eric Nielsen 53a3cd7933 Fix git-info arbitrary command execution exposure
The contents of git_info are subject to expansion by the shell. Avoid
putting raw ref names in the prompt to protect the user from arbitrary
code execution via specially crafted ref names (e.g., a ref named
'$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)' would execute 'sudo rm -rf /' when the
prompt is drawn). Instead, put the ref names in new global variables and
reference these variables from git_info.

See:
- https://github.com/njhartwell/pw3nage
- 8976500cbb

Fixes #158, Closes #159
2017-03-30 10:17:03 -07:00
Eric Nielsen 0df896c3f1 Change git-info verbose mode implementation
so it behaves alike the non-verbose mode. For example, in the "merge"
special action context, files are being reported as both indexed and
unindexed by `git diff-index` and `git diff-files` commands in
non-verbose mode. That was not the case with the regular expressions
used in the verbose mode.
2017-03-29 19:40:03 -07:00
Eric Nielsen d56bddf4b1 Add coalesce function to git-info
that will be used by the minimal theme, and could be used for future
themes too. Prezto had this, but we diminished its necessity by
simplifying how git-info works.
2017-03-27 13:56:47 -07:00
Eric Nielsen a844454a65 Remove undocumented git-info configuration
`prompt.showinfo` for enabling or disabling it globally or per
repository. It can be globally disabled by not loading the `git-info`
module at all, and prompts currently will not break (and in the future
should still not break) if the module is not loaded.

This removes one git call that is used to check for the
`prompt.showinfo` configuration value.
2017-03-27 13:56:47 -07:00
Eric Nielsen 53aef5a05c Add diverged context to git-info
that, when defined, will be set if branch is both ahead and behind of
remote. If not defined, the `ahead` and `behind` contexts will still be
set, as how they worked previously.
2017-03-27 13:56:47 -07:00
Eric Nielsen 9f4c21cee8 Update git-info README.md
to fix the "Special Action Contexts" title mistakenly being "Untracked
Contexts", and other minor changes.
2017-01-16 10:26:17 -08:00
Eric Nielsen cabf368847 Add git-info module
based on the Prezto git module
[function](https://github.com/sorin-ionescu/prezto/blob/master/modules/git/functions/git-info)
and further refactored and simplified.

What changed:
- Commit format only in 'detached HEAD' state, so
  `$(coalesce "%b" "%c")` is not needed, because you only get one of
  those.
- Removed the `added`, `deleted`, `modified`, `renamed` and `unmerged`
  verbose contexts.
- `git status` is only used in verbose mode.
- In non-verbose mode, the `untracked` context is not available, and
  also untracked files are not considered for computing the `dirty`
  context. Using `git status` or checking for untracked files is
  [expensive](https://gist.github.com/sindresorhus/3898739).
2017-01-16 10:26:17 -08:00