Commit b1b10c33 authored by Johannes Altmanninger's avatar Johannes Altmanninger Committed by GitHub

Check whether we are inside the worktree (#651)

Some git commands require to be run from inside the worktree (as opposed
    to the git dir, although it's usually in .git). This commit adds
a function git_is_worktree to check this. It is used for the commands
that need the worktree instead of git_is_repo.

An alternative solution might have been to find the git worktree in the
parent of the git directory, but this doesn't work for all cases.
Generally it's impossible to detect the location of the worktree (plus
    it's not unique).
Co-authored-by: default avatarPablo Aguiar <scorphus@gmail.com>
parent e7a8e74f
function git_is_dirty -d "Check if there are changes to tracked files"
git_is_repo; and not command git diff --no-ext-diff --quiet --exit-code
git_is_worktree; and not command git diff --no-ext-diff --quiet --exit-code
end
function git_is_touched -d "Check if repo has any changes"
git_is_repo; and begin
git_is_worktree; and begin
# 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
......
function git_is_worktree -d "Check if directory is inside the worktree of a repository"
git_is_repo
and test (command git rev-parse --is-inside-git-dir) = false
end
function git_untracked -d "Print list of untracked files"
git_is_repo; and begin
git_is_worktree; and begin
command git ls-files --other --exclude-standard
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment