• Show log

    Commit

  • Hash : 2696c5c3
    Author : Patrick Steinhardt
    Date : 2017-05-19T09:21:17

    repository: make check if repo is a worktree more strict
    
    To determine if a repository is a worktree or not, we currently check
    for the existence of a "gitdir" file inside of the repository's gitdir.
    While this is sufficient for non-broken repositories, we have at least
    one case of a subtly broken repository where there exists a gitdir file
    inside of a gitmodule. This will cause us to misidentify the submodule
    as a worktree.
    
    While this is not really a fault of ours, we can do better here by
    observing that a repository can only ever be a worktree iff its common
    directory and dotgit directory are different. This allows us to make our
    check whether a repo is a worktree or not more strict by doing a simple
    string comparison of these two directories. This will also allow us to
    do the right thing in the above case of a broken repository, as for
    submodules these directories will be the same. At the same time, this
    allows us to skip the `stat` check for the "gitdir" file for most
    repositories.