|
21 | 21 | from typing import Dict, Optional, TypedDict, Union |
22 | 22 | from urllib import parse as urlparse |
23 | 23 |
|
| 24 | +from libvcs.cmd.git import Git |
| 25 | + |
24 | 26 | from .. import exc |
25 | 27 | from .base import BaseProject, VCSLocation, convert_pip_url as base_convert_pip_url |
26 | 28 |
|
@@ -300,24 +302,26 @@ def set_remotes(self, overwrite: bool = False): |
300 | 302 |
|
301 | 303 | def obtain(self, *args, **kwargs): |
302 | 304 | """Retrieve the repository, clone if doesn't exist.""" |
303 | | - self.ensure_dir() |
304 | | - |
305 | | - url = self.url |
| 305 | + clone_kwargs = {} |
306 | 306 |
|
307 | | - cmd = ["clone", "--progress"] |
308 | 307 | if self.git_shallow: |
309 | | - cmd.extend(["--depth", "1"]) |
| 308 | + clone_kwargs["depth"] = 1 |
310 | 309 | if self.tls_verify: |
311 | | - cmd.extend(["-c", "http.sslVerify=false"]) |
312 | | - cmd.extend([url, self.dir]) |
| 310 | + clone_kwargs["c"] = "http.sslVerify=false" |
313 | 311 |
|
314 | 312 | self.log.info("Cloning.") |
315 | | - self.run(cmd, log_in_real_time=True) |
| 313 | + |
| 314 | + git = Git(dir=self.dir) |
| 315 | + |
| 316 | + # Needs to log to std out, e.g. log_in_real_time |
| 317 | + git.clone(url=self.url, progress=True, make_parents=True, **clone_kwargs) |
316 | 318 |
|
317 | 319 | self.log.info("Initializing submodules.") |
| 320 | + |
318 | 321 | self.run(["submodule", "init"], log_in_real_time=True) |
319 | | - cmd = ["submodule", "update", "--recursive", "--init"] |
320 | | - self.run(cmd, log_in_real_time=True) |
| 322 | + self.run( |
| 323 | + ["submodule", "update", "--recursive", "--init"], log_in_real_time=True |
| 324 | + ) |
321 | 325 |
|
322 | 326 | self.set_remotes(overwrite=True) |
323 | 327 |
|
|
0 commit comments