From 0f2e45a3a69e9a99d91ed26768b82e3454aa8630 Mon Sep 17 00:00:00 2001 From: Akshay Verma Date: Sat, 24 Mar 2018 12:27:05 +0530 Subject: [PATCH] Pass refs to ls-remote This will fix the issue of parsing large output locally Change-Id: I9a5cf1238147a02c92a3fca53eab9bd57f9d16b4 --- project.py | 4 ++-- subcmds/download.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/project.py b/project.py index 5297a5cb..855bd60d 100755 --- a/project.py +++ b/project.py @@ -2270,8 +2270,8 @@ class Project(object): if self._allrefs: raise GitError('%s cherry-pick %s ' % (self.name, rev)) - def _LsRemote(self): - cmd = ['ls-remote'] + def _LsRemote(self, refs): + cmd = ['ls-remote', self.remote.name, refs] p = GitCommand(self, cmd, capture_stdout=True) if p.Wait() == 0: if hasattr(p.stdout, 'decode'): diff --git a/subcmds/download.py b/subcmds/download.py index 384af781..dba70ffd 100755 --- a/subcmds/download.py +++ b/subcmds/download.py @@ -62,9 +62,10 @@ If no project is specified try to use current directory as a project. ps_id = int(m.group(2)) else: ps_id = 1 - regex = r'refs/changes/%2.2d/%d/(\d+)' % (chg_id % 100, chg_id) - output = project._LsRemote() + refs = 'refs/changes/%2.2d/%d/' % (chg_id % 100, chg_id) + output = project._LsRemote(refs + '*') if output: + regex = refs + r'(\d+)' rcomp = re.compile(regex, re.I) for line in output.splitlines(): match = rcomp.search(line)