Fail git status if .git not in cwd or parent directory
This commit is contained in:
8
lib/git/helpers.sh
Normal file
8
lib/git/helpers.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
function find_in_cwd_or_parent() {
|
||||
local slashes=${PWD//[^\/]/}; local directory=$PWD;
|
||||
for (( n=${#slashes}; n>0; --n )); do
|
||||
test -e "$directory/$1" && echo "$directory/$1" && return 0
|
||||
directory="$directory/.."
|
||||
done
|
||||
return 1
|
||||
}
|
||||
@@ -17,6 +17,11 @@
|
||||
# 1 || staged, 2 || unmerged, 3 || unstaged, 4 || untracked
|
||||
# --------------------------------------------------------------------
|
||||
git_status_shortcuts() {
|
||||
# Fail if not a git repo
|
||||
if ! find_in_cwd_or_parent ".git" > /dev/null; then
|
||||
echo -e "\e[31mNot a git repository (or any of the parent directories)\e[0m"
|
||||
return 1
|
||||
fi
|
||||
zsh_compat # Ensure shwordsplit is on for zsh
|
||||
git_clear_vars
|
||||
# Run ruby script, store output
|
||||
@@ -120,7 +125,7 @@ scmb_expand_args() {
|
||||
if [ "$first" -eq 1 ]; then first=0; else printf '\t'; fi
|
||||
eval printf '%s' "\"\$$git_env_char$arg\""
|
||||
elif [[ "$arg" =~ ^[0-9]+-[0-9]+$ ]]; then # Expand ranges into $e{*} variables
|
||||
|
||||
|
||||
for i in $(eval echo {${arg/-/..}}); do
|
||||
if [ "$first" -eq 1 ]; then first=0; else printf '\t'; fi
|
||||
eval printf '%s' "\"\$$git_env_char$i\""
|
||||
@@ -148,7 +153,7 @@ git_clear_vars() {
|
||||
|
||||
|
||||
# Shortcuts for resolving merge conflicts.
|
||||
_git_resolve_merge_conflict() {
|
||||
_git_resolve_merge_conflict() {
|
||||
if [ -n "$2" ]; then
|
||||
# Expand args and process resulting set of files.
|
||||
IFS=$'\t'
|
||||
|
||||
@@ -17,6 +17,7 @@ export scmbDir="$(dirname ${BASH_SOURCE:-$0})"
|
||||
if [[ -s "$HOME/.git.scmbrc" ]]; then
|
||||
# Load git config
|
||||
. "$HOME/.git.scmbrc"
|
||||
. "$scmbDir/lib/git/helpers.sh"
|
||||
. "$scmbDir/lib/git/aliases.sh"
|
||||
. "$scmbDir/lib/git/keybindings.sh"
|
||||
. "$scmbDir/lib/git/status_shortcuts.sh"
|
||||
|
||||
Reference in New Issue
Block a user