Fix gbs cost too long time to export icu package. 33/320633/2 accepted/tools_devbase_tools master accepted/tools/devbase/tools/20250527.103743 accepted/tools/devbase/tools/20250528.062221
authorwanchao.xu <wanchao.xu@samsung.com>
Wed, 5 Mar 2025 06:43:39 +0000 (14:43 +0800)
committerwanchao.xu <wanchao.xu@samsung.com>
Wed, 5 Mar 2025 07:50:56 +0000 (15:50 +0800)
* 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 <wanchao.xu@samsung.com>
gbp/git/repository.py

index 9d94b822805a507d8212788351af9560a9b65a15..8146204b3661213f64705676b7af2f339d63839e 100644 (file)
@@ -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: