Every time the patchew's applier mode is restarted, it repopulates a cache
of git repositories. For QEMU, the git repo has thousands of tags
which take a very long time to create. Synchronize refs/heads/* only
(--mirror=fetch would synchronize all of refs/*); the tags are
only used by patchew-cli when a Based-on trailer is found, and can
be populated lazily.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
patchew-cli | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/patchew-cli b/patchew-cli
index 5a39f79..6a78f81 100755
--- a/patchew-cli
+++ b/patchew-cli
@@ -43,9 +43,19 @@ def git_clone_repo(clone, remote, head, logf, checkout=True, recursive=False):
cwd=cache_repo,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
- subprocess.check_call(["git", "remote", "add", "-f", "--mirror=fetch",
+ subprocess.check_call(["git", "remote", "add",
remote_name, remote], cwd=cache_repo,
stdout=logf, stderr=logf)
+ subprocess.check_call(["git", "config",
+ "remote.%s.fetch" % (remote_name,),
+ "+refs/heads/*:refs/heads/*"], cwd=cache_repo,
+ stdout=logf, stderr=logf)
+ if head.startswith("refs/tags/"):
+ subprocess.check_call(["git", "fetch", remote_name, "+%s:%s" % (head, head)],
+ cwd=cache_repo, stdout=logf, stderr=logf)
+ else:
+ subprocess.check_call(["git", "fetch", remote_name], cwd=cache_repo,
+ stdout=logf, stderr=logf)
clone_cmd = ["git", "clone", "-q"]
if recursive:
clone_cmd += ["--recursive"]
--
2.20.1
_______________________________________________
Patchew-devel mailing list
Patchew-devel@redhat.com
https://www.redhat.com/mailman/listinfo/patchew-devel