diff --git a/lib/git/git_is_touched.fish b/lib/git/git_is_touched.fish index 172f605..335bed6 100644 --- a/lib/git/git_is_touched.fish +++ b/lib/git/git_is_touched.fish @@ -1,5 +1,8 @@ function git_is_touched -d "Check if repo has any changes" git_is_repo; and begin - test -n (echo (command git status --porcelain)) + # The first checks for staged changes, the second for unstaged ones. + # We put them in this order because checking staged changes is *fast*. + not command git diff-index --cached --quiet HEAD -- >/dev/null 2>&1 + or not command git diff --no-ext-diff --quiet --exit-code >/dev/null 2>&1 end end