[Patchew-devel] [PATCH] applier: synchronize tags lazily into the cache

Paolo Bonzini posted 1 patch 5 years, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/patchew next tags/patchew/20190111100233.24335-2-pbonzini@redhat.com
There is a newer version of this series
patchew-cli | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
[Patchew-devel] [PATCH] applier: synchronize tags lazily into the cache
Posted by Paolo Bonzini 5 years, 5 months ago
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):
-    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"]

Patchew-devel mailing list