فهرست منبع

project: move successful fetch output behind verbose

Syncing projects works fine the majority of the time.  So rather than
dump all of that noisy output to stdout, lets capture it and only show
when things fail or in verbose mode.  This tidies up the default `repo
sync` output.

Bug: https://crbug.com/gerrit/11293
Change-Id: I8314dd92e1e6aadeb26e36a8c92610da419684e6
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/255413
Reviewed-by: David Pursehouse <dpursehouse@collab.net>
Tested-by: Mike Frysinger <vapier@google.com>
Mike Frysinger 6 سال پیش
والد
کامیت
31990f0097
2فایلهای تغییر یافته به همراه10 افزوده شده و 3 حذف شده
  1. 6 2
      git_command.py
  2. 4 1
      project.py

+ 6 - 2
git_command.py

@@ -226,6 +226,7 @@ class GitCommand(object):
                provide_stdin=False,
                provide_stdin=False,
                capture_stdout=False,
                capture_stdout=False,
                capture_stderr=False,
                capture_stderr=False,
+               merge_output=False,
                disable_editor=False,
                disable_editor=False,
                ssh_proxy=False,
                ssh_proxy=False,
                cwd=None,
                cwd=None,
@@ -277,7 +278,7 @@ class GitCommand(object):
       stdin = None
       stdin = None
 
 
     stdout = subprocess.PIPE
     stdout = subprocess.PIPE
-    stderr = subprocess.PIPE
+    stderr = subprocess.STDOUT if merge_output else subprocess.PIPE
 
 
     if IsTrace():
     if IsTrace():
       global LAST_CWD
       global LAST_CWD
@@ -305,6 +306,8 @@ class GitCommand(object):
         dbg += ' 1>|'
         dbg += ' 1>|'
       if stderr == subprocess.PIPE:
       if stderr == subprocess.PIPE:
         dbg += ' 2>|'
         dbg += ' 2>|'
+      elif stderr == subprocess.STDOUT:
+        dbg += ' 2>&1'
       Trace('%s', dbg)
       Trace('%s', dbg)
 
 
     try:
     try:
@@ -352,7 +355,8 @@ class GitCommand(object):
     p = self.process
     p = self.process
     s_in = platform_utils.FileDescriptorStreams.create()
     s_in = platform_utils.FileDescriptorStreams.create()
     s_in.add(p.stdout, sys.stdout, 'stdout')
     s_in.add(p.stdout, sys.stdout, 'stdout')
-    s_in.add(p.stderr, sys.stderr, 'stderr')
+    if p.stderr is not None:
+      s_in.add(p.stderr, sys.stderr, 'stderr')
     self.stdout = ''
     self.stdout = ''
     self.stderr = ''
     self.stderr = ''
 
 

+ 4 - 1
project.py

@@ -2365,7 +2365,8 @@ class Project(object):
 
 
     ok = False
     ok = False
     for _i in range(2):
     for _i in range(2):
-      gitcmd = GitCommand(self, cmd, bare=True, ssh_proxy=ssh_proxy)
+      gitcmd = GitCommand(self, cmd, bare=True, ssh_proxy=ssh_proxy,
+                          merge_output=True, capture_stdout=not verbose)
       ret = gitcmd.Wait()
       ret = gitcmd.Wait()
       if ret == 0:
       if ret == 0:
         ok = True
         ok = True
@@ -2388,6 +2389,8 @@ class Project(object):
       elif ret < 0:
       elif ret < 0:
         # Git died with a signal, exit immediately
         # Git died with a signal, exit immediately
         break
         break
+      if not verbose:
+        print('%s:\n%s' % (self.name, gitcmd.stdout), file=sys.stderr)
       time.sleep(random.randint(30, 45))
       time.sleep(random.randint(30, 45))
 
 
     if initial:
     if initial: