• Stefan Beller's avatar
    worktree: check if a submodule uses worktrees · 1a248cf2
    Stefan Beller authored
    In a later patch we want to move around the the git directory of
    a submodule. Both submodules as well as worktrees are involved in
    placing git directories at unusual places, so their functionality
    may collide. To react appropriately to situations where worktrees
    in submodules are in use, offer a new function to query the
    a submodule if it uses the worktree feature.
    
    An earlier approach:
      "Implement submodule_get_worktrees and just count them", however:
      This can be done cheaply (both in new code to write as well as run time)
      by obtaining the list of worktrees based off that submodules git
      directory. However as we have loaded the variables for the current
      repository, the values in the submodule worktree
      can be wrong, e.g.
      * core.ignorecase may differ between these two repositories
      * the ref resolution is broken (refs/heads/branch in the submodule
        resolves to the sha1 value of the `branch` in the current repository
        that may not exist or have another sha1)
    
    The implementation here is just checking for any files in
    $GIT_COMMON_DIR/worktrees for the submodule, which ought to be sufficient
    if the submodule is using the current repository format, which we also
    check.
    Signed-off-by: Stefan Beller's avatarStefan Beller <sbeller@google.com>
    Signed-off-by: 's avatarJunio C Hamano <gitster@pobox.com>
    1a248cf2
worktree.c 10.2 KB