diff --git a/.zshrc b/.zshrc index b60cc65..06ad865 100644 --- a/.zshrc +++ b/.zshrc @@ -171,22 +171,24 @@ todo() { ( # subshell to protect against directory changes todo_dir="$(dirname "$(realpath ~/todo)")" + todo_file="$(realpath ~/todo)" if [ -z "$@" ];then - cd "$(dirname "$(realpath ~/todo)")" + cd "$todo_dir" # pull the latest commits git rev-parse && git pull - "$EDITOR" ~/todo + # open the file + "$EDITOR" "$todo_file" - # commit and push the file if it's in a git repo - git rev-parse && - git commit "$(realpath ~/todo)" -m 'todo' && + # commit and push the file if it's in a git repo and the file has changed + if git rev-parse && ! git diff --exit-code "$todo_file"; then + git commit "$todo_file" -m 'todo' && git push + fi else - cd "$todo_dir" - git $@ + git -C "$todo_dir" $@ fi ) }