diff options
| author | srdusr <trevorgray@srdusr.com> | 2023-04-12 20:06:59 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2023-04-12 20:06:59 +0200 |
| commit | 70510a0558f6a63c57f6f0d1095098863ab53c5f (patch) | |
| tree | c23101508829b063823814f0be183b12bceb9a47 /.config/zsh/.zshrc | |
| parent | 9620cd63ead3d53125a343981941669bf438eefe (diff) | |
| download | dotfiles-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/.zshrc | 22 |
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 |
