1010from cfgv import remove_defaults
1111
1212import pre_commit .constants as C
13+ from pre_commit import git
1314from pre_commit import output
1415from pre_commit .clientlib import CONFIG_SCHEMA
1516from pre_commit .clientlib import InvalidManifestError
2021from pre_commit .commands .migrate_config import migrate_config
2122from pre_commit .util import CalledProcessError
2223from pre_commit .util import cmd_output
24+ from pre_commit .util import tmpdir
2325
2426
2527class RepositoryCannotBeUpdatedError (RuntimeError ):
@@ -34,19 +36,20 @@ def _update_repo(repo_config, store, tags_only):
3436 Args:
3537 repo_config - A config for a repository
3638 """
37- repo_path = store .clone (repo_config ['repo' ], repo_config ['rev' ])
38-
39- cmd_output ('git' , 'fetch' , cwd = repo_path )
40- tag_cmd = ('git' , 'describe' , 'origin/master' , '--tags' )
41- if tags_only :
42- tag_cmd += ('--abbrev=0' ,)
43- else :
44- tag_cmd += ('--exact' ,)
45- try :
46- rev = cmd_output (* tag_cmd , cwd = repo_path )[1 ].strip ()
47- except CalledProcessError :
48- tag_cmd = ('git' , 'rev-parse' , 'origin/master' )
49- rev = cmd_output (* tag_cmd , cwd = repo_path )[1 ].strip ()
39+ with tmpdir () as repo_path :
40+ git .init_repo (repo_path , repo_config ['repo' ])
41+ cmd_output ('git' , 'fetch' , cwd = repo_path )
42+
43+ tag_cmd = ('git' , 'describe' , 'origin/master' , '--tags' )
44+ if tags_only :
45+ tag_cmd += ('--abbrev=0' ,)
46+ else :
47+ tag_cmd += ('--exact' ,)
48+ try :
49+ rev = cmd_output (* tag_cmd , cwd = repo_path )[1 ].strip ()
50+ except CalledProcessError :
51+ tag_cmd = ('git' , 'rev-parse' , 'origin/master' )
52+ rev = cmd_output (* tag_cmd , cwd = repo_path )[1 ].strip ()
5053
5154 # Don't bother trying to update if our rev is the same
5255 if rev == repo_config ['rev' ]:
0 commit comments