From deef29c9321586f332a43b3aa4eb783b97d3c15d Mon Sep 17 00:00:00 2001 From: "wanchao.xu" Date: Wed, 5 Mar 2025 14:43:39 +0800 Subject: [PATCH] Fix gbs cost too long time to export icu package. * Python3 use bytes to save the output of git command, and bytes type is immutable, it will release and reallocate memory when copying output. python2 use string to save output, it's alterable. Change-Id: Ic1fb891fb03321708f2895cd30b4f797bdf78a6b Signed-off-by: wanchao.xu --- gbp/git/repository.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gbp/git/repository.py b/gbp/git/repository.py index 9d94b822..8146204b 100644 --- a/gbp/git/repository.py +++ b/gbp/git/repository.py @@ -183,14 +183,14 @@ class GitRepository(object): if not cwd: cwd = self.path ret = 0 - stdout = b'' - stderr = b'' + stdout = bytearray(b'') + stderr = bytearray(b'') try: for outdata in self.__git_inout(command, args, input, extra_env, cwd, capture_stderr, capture_stdout): - stdout += outdata[0] - stderr += outdata[1] + stdout.extend(outdata[0]) + stderr.extend(outdata[1]) except GitRepositoryError as err: ret = err.returncode return stdout, stderr, ret @@ -207,11 +207,11 @@ class GitRepository(object): """ if not cwd: cwd = self.path - stderr = b'' + stderr = bytearray(b'') try: for outdata in self.__git_inout(command, args, stdin, extra_env, cwd, capture_stderr, True): - stderr += outdata[1] + stderr.extend(outdata[1]) yield outdata[0] except GitRepositoryError as err: err.stderr = stderr @@ -2022,7 +2022,7 @@ class GitRepository(object): try: if not os.path.exists(abspath): os.makedirs(abspath) - stderr = b'' + stderr = bytearray(b'') try: for out in klass.__git_inout(command='init', args=args.args, @@ -2031,7 +2031,7 @@ class GitRepository(object): cwd=abspath, capture_stderr=True, capture_stdout=True): - stderr += out[1] + stderr.extend(out[1]) except GitRepositoryError: raise GitRepositoryError("Error running git init: %s" % stderr.decode().strip()) except Exception as excobj: @@ -2086,7 +2086,7 @@ class GitRepository(object): try: if not os.path.exists(abspath): os.makedirs(abspath) - stderr = b'' + stderr = bytearray(b'') try: for out in klass.__git_inout(command='clone', args=args.args, @@ -2095,7 +2095,7 @@ class GitRepository(object): cwd=abspath, capture_stderr=True, capture_stdout=True): - stderr += out[1] + stderr.extend(out[1]) except GitRepositoryError: raise GitRepositoryError("Error running git clone: %s" % stderr.decode()) except Exception as excobj: -- 2.34.1