Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Revert "fetch tag pointing to HEAD in shallow clone"
This reverts commit c6b4874.
  • Loading branch information
gnought committed Feb 13, 2026
commit 19b60a6b487b0a913fd3e21895ec7167abbfef51
23 changes: 5 additions & 18 deletions pre_commit/store.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from pre_commit import git
from pre_commit.util import CalledProcessError
from pre_commit.util import clean_path_on_failure
from pre_commit.util import cmd_output
from pre_commit.util import cmd_output_b
from pre_commit.util import resource_text


Expand Down Expand Up @@ -174,32 +174,19 @@ def _get_result() -> str | None:

return directory

def _complete_clone(
self, ref: str,
git_cmd: Callable[..., tuple[int, str, str | None]],
) -> None:
def _complete_clone(self, ref: str, git_cmd: Callable[..., None]) -> None:
"""Perform a complete clone of a repository and its submodules """

git_cmd('fetch', 'origin', '--tags')
git_cmd('checkout', ref)
git_cmd('submodule', 'update', '--init', '--recursive')

def _shallow_clone(
self, ref: str,
git_cmd: Callable[..., tuple[int, str, str | None]],
) -> None:
def _shallow_clone(self, ref: str, git_cmd: Callable[..., None]) -> None:
"""Perform a shallow clone of a repository and its submodules """

git_config = 'protocol.version=2'
git_cmd('-c', git_config, 'fetch', 'origin', ref, '--depth=1')
git_cmd('checkout', 'FETCH_HEAD')
rev = git_cmd('rev-parse', 'FETCH_HEAD')[1].strip()
lines = git_cmd('ls-remote', '--heads', 'origin')[1].splitlines()
for line in lines:
if line.startswith(rev):
tag_name = line.rsplit('/', 1)[-1]
git_cmd('fetch', 'origin', 'tag', tag_name, '--no-tags')
break
git_cmd(
'-c', git_config, 'submodule', 'update', '--init', '--recursive',
'--depth=1',
Expand All @@ -212,8 +199,8 @@ def clone_strategy(directory: str) -> None:
git.init_repo(directory, repo)
env = git.no_git_env()

def _git_cmd(*args: str) -> tuple[int, str, str | None]:
return cmd_output('git', *args, cwd=directory, env=env)
def _git_cmd(*args: str) -> None:
cmd_output_b('git', *args, cwd=directory, env=env)

try:
self._shallow_clone(ref, _git_cmd)
Expand Down