Skip to content

[Windows] Hooks for submodules that are configured outside the submodule repository lead to error in PurePath.relative_to #1999

Description

@visq

Issue: Repo.Index.commit fails during execution of post-commit hook
Root Cause: The .git config does not reside inside the submodule repository in the problematic setup.

 Repo/SubmoduleA$ cat .git
gitdir: ../.git/modules/SubmoduleA

However, this is expected by the commit hook on windows:

 if sys.platform == "win32" and not _has_file_extension(hp):
# Windows only uses extensions to determine how to open files
# (doesn't understand shebangs). Try using bash to run the hook.
relative_hp = Path(hp).relative_to(index.repo.working_dir).as_posix()
cmd = ["bash.exe", relative_hp]

Reproduce: Track files with git-lfs and have the hooks outside the repository directory

Fix:

 if sys.platform == "win32" and not _has_file_extension(hp):
# Windows only uses extensions to determine how to open files
# (doesn't understand shebangs). Try using bash to run the hook.
relative_hp = Path(hp).relative_to(index.repo.working_dir, walk_up=True).as_posix()
cmd = ["bash.exe", relative_hp]

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions