Просмотр исходного кода

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 лет назад
Родитель
Сommit
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: