scm: use dulwich backend when fetching exps during clone/pull (#9023)

refspecs uses pygit2 backend by default, which does not support git credential
helpers. This PR forces to use dulwich backend during clone/pull operations.
This commit is contained in:
skshetry
2023-02-14 19:18:40 +05:45
committed by GitHub
parent 73497dae9e
commit ed1ab7fa75
3 changed files with 8 additions and 9 deletions
+1 -1
View File
@@ -253,7 +253,7 @@ def _pull(git: "Git", unshallow: bool = False):
git.fetch(unshallow=unshallow)
_merge_upstream(git)
fetch_all_exps(git, "origin")
fetch_all_exps(git, "origin", backends=["dulwich"])
def _merge_upstream(git: "Git"):
+6 -7
View File
@@ -5,6 +5,7 @@ from collections import defaultdict
from functools import wraps
from typing import (
TYPE_CHECKING,
Any,
Callable,
Dict,
Generator,
@@ -279,17 +280,15 @@ def check_ref_format(scm: "Git", ref: ExpRefInfo):
)
def fetch_all_exps(scm: "Git", url: str, progress: Optional[Callable] = None):
def fetch_all_exps(
scm: "Git", url: str, progress: Optional[Callable] = None, **kwargs: Any
):
refspecs = [
f"{ref}:{ref}"
for ref in iter_remote_refs(scm, url, base=EXPS_NAMESPACE)
for ref in iter_remote_refs(scm, url, base=EXPS_NAMESPACE, **kwargs)
if not (ref.startswith(EXEC_NAMESPACE) or ref in STASHES)
]
scm.fetch_refspecs(
url,
refspecs,
progress=progress,
)
scm.fetch_refspecs(url, refspecs, progress=progress, **kwargs)
def get_random_exp_name(scm, baseline_rev):
+1 -1
View File
@@ -179,7 +179,7 @@ def clone(url: str, to_path: str, **kwargs):
try:
git = Git.clone(url, to_path, progress=pbar.update_git, **kwargs)
if "shallow_branch" not in kwargs:
fetch_all_exps(git, url, progress=pbar.update_git)
fetch_all_exps(git, url, progress=pbar.update_git, backends=["dulwich"])
return git
except InternalCloneError as exc:
raise CloneError("SCM error") from exc