aboutsummaryrefslogtreecommitdiff
path: root/.config/zsh/.zshrc
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2023-04-12 20:06:59 +0200
committersrdusr <trevorgray@srdusr.com>2023-04-12 20:06:59 +0200
commit70510a0558f6a63c57f6f0d1095098863ab53c5f (patch)
treec23101508829b063823814f0be183b12bceb9a47 /.config/zsh/.zshrc
parent9620cd63ead3d53125a343981941669bf438eefe (diff)
downloaddotfiles-70510a0558f6a63c57f6f0d1095098863ab53c5f.tar.gz
dotfiles-70510a0558f6a63c57f6f0d1095098863ab53c5f.zip
Set bare dotfiles repository git environment variables dynamically
Diffstat (limited to '.config/zsh/.zshrc')
-rw-r--r--.config/zsh/.zshrc22
1 files changed, 15 insertions, 7 deletions
diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc
index 28017b3..e9a4983 100644
--- a/.config/zsh/.zshrc
+++ b/.config/zsh/.zshrc
@@ -370,27 +370,35 @@ extract () {
### Dotfiles
alias config='git --git-dir=$HOME/.cfg --work-tree=$HOME'
-### Set bare dotfiles repository git environment variables dynamically
+# Set bare dotfiles repository git environment variables dynamically
function set_git_env_vars() {
local git_dir="$(git rev-parse --git-dir -C . 2>/dev/null)"
if [[ -n "$git_dir" ]]; then
local is_bare="$(git -C "$git_dir" rev-parse --is-bare-repository 2>/dev/null)"
if [[ "$is_bare" == "true" ]]; then
export GIT_DIR="$HOME/.cfg"
- #export GIT_WORK_TREE="$HOME"
export GIT_WORK_TREE=$(realpath $(eval echo ~))
- #export GIT_WORK_TREE="$HOME/$(basename "$(git rev-parse --show-toplevel)")"
else
unset GIT_DIR
unset GIT_WORK_TREE
fi
else
- export GIT_DIR="$HOME/.cfg"
- #export GIT_WORK_TREE="$HOME"
- export GIT_WORK_TREE=$(realpath $(eval echo ~))
- #export GIT_WORK_TREE="$HOME/$(basename "$(git rev-parse --show-toplevel)")"
+ local root_dir="$(git rev-parse --show-toplevel 2>/dev/null)"
+ if [[ -n "$root_dir" ]]; then
+ unset GIT_DIR
+ export GIT_WORK_TREE="$root_dir"
+ else
+ export GIT_DIR="$HOME/.cfg"
+ export GIT_WORK_TREE=$(realpath $(eval echo ~))
+ fi
fi
}
+
+# Define an auto_cd hook to automatically update Git environment variables
+function chpwd() {
+ set_git_env_vars
+}
+# Call the function to set Git environment variables when the shell starts up
set_git_env_vars
function gsp