• Show log

    Commit

  • Hash : 39abd3ad
    Author : Patrick Steinhardt
    Date : 2016-11-04T13:39:54

    worktree: compute workdir for worktrees opened via their gitdir
    
    When opening a worktree via the gitdir of its parent repository
    we fail to correctly set up the worktree's working directory. The
    problem here is two-fold: we first fail to see that the gitdir
    actually is a gitdir of a working tree and then subsequently
    fail to determine the working tree location from the gitdir.
    
    The first problem of not noticing a gitdir belongs to a worktree
    can be solved by checking for the existence of a `gitdir` file in
    the gitdir. This file points back to the gitlink file located in
    the working tree's working directory. As this file only exists
    for worktrees, it should be sufficient indication of the gitdir
    belonging to a worktree.
    
    The second problem, that is determining the location of the
    worktree's working directory, can then be solved by reading the
    `gitdir` file in the working directory's gitdir. When we now
    resolve relative paths and strip the final `.git` component, we
    have the actual worktree's working directory location.