:p
atchew
Login
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 XXXXXXX..XXXXXXX 100755 --- a/patchew-cli +++ b/patchew-cli @@ -XXX,XX +XXX,XX @@ 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
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> --- v1->v2: always fetch refs/heads, so that HEAD contains a valid reference patchew-cli | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/patchew-cli b/patchew-cli index XXXXXXX..XXXXXXX 100755 --- a/patchew-cli +++ b/patchew-cli @@ -XXX,XX +XXX,XX @@ 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) + subprocess.check_call(["git", "fetch", remote_name], 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) 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