git-cl: Only display a detailed message when git-cl fails.

git-cl will print the path to the collected traces and git info,
but will only display the detailed message when git-cl fails.

Bug: 961663, 955206
Change-Id: I0a4d470aba24d696bdd5e02e069833f47cf56c02
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/1615665
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
diff --git a/git_cl.py b/git_cl.py
index f5b27d8..8c58f14 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -82,20 +82,14 @@
 # The maximum number of traces we will keep. Multiplied by 3 since we store
 # 3 files per trace.
 MAX_TRACES = 3 * 10
-# Message to display to the user after git-cl has run, to inform them of the
-# traces we just collected.
+# Message to be displayed to the user to inform where to find the traces for a
+# git-cl upload execution.
 TRACES_MESSAGE = (
 '\n'
-'A trace of this git-cl execution has been recorded at:\n'
+'The traces of this git-cl execution have been recorded at:\n'
 '  %(trace_name)s-traces.zip\n'
-'A redacted copy of your gitcookies file and git config has been recorded at:\n'
-'  %(trace_name)s-git-info.zip\n'
-'If git-cl is not working correctly, please file a bug under the Infra>SDK\n'
-'component, include the files above, and set the Restrict-View-Google label\n'
-'so that they\'re not publicly accessible.\n'
-'Review the files before upload. They might contain sensitive information\n'
-'like reviewer emails, patchset titles, and the local path to your checkout.\n'
-)
+'Copies of your gitcookies file and git config have been recorded at:\n'
+'  %(trace_name)s-git-info.zip\n')
 # Format of the message to be stored as part of the traces to give developers a
 # better context when they go through traces.
 TRACES_README_FORMAT = (
@@ -2542,11 +2536,9 @@
             '  %s'
             'Consider removing them manually.' % TRACES_DIR)
 
-  def _WriteGitPushTraces(self, traces_dir, git_push_metadata):
+  def _WriteGitPushTraces(self, trace_name, traces_dir, git_push_metadata):
     """Zip and write the git push traces stored in traces_dir."""
     gclient_utils.safe_makedirs(TRACES_DIR)
-    now = datetime_now()
-    trace_name = os.path.join(TRACES_DIR, now.strftime('%Y%m%dT%H%M%S.%f'))
     traces_zip = trace_name + '-traces'
     traces_readme = trace_name + '-README'
     # Create a temporary dir to store git config and gitcookies in. It will be
@@ -2554,7 +2546,7 @@
     git_info_dir = tempfile.mkdtemp()
     git_info_zip = trace_name + '-git-info'
 
-    git_push_metadata['now'] = now.strftime('%c')
+    git_push_metadata['now'] = datetime_now().strftime('%c')
     git_push_metadata['trace_name'] = trace_name
     gclient_utils.FileWrite(
         traces_readme, TRACES_README_FORMAT % git_push_metadata)
@@ -2584,8 +2576,6 @@
             GITCOOKIES_REDACT_RE.sub('REDACTED', gitcookies))
     shutil.make_archive(git_info_zip, 'zip', git_info_dir)
 
-    print(TRACES_MESSAGE % {'trace_name': trace_name})
-
     gclient_utils.rmtree(git_info_dir)
 
   def _RunGitPushWithTraces(
@@ -2594,6 +2584,8 @@
     # Create a temporary directory to store traces in. Traces will be compressed
     # and stored in a 'traces' dir inside depot_tools.
     traces_dir = tempfile.mkdtemp()
+    trace_name = os.path.join(
+        TRACES_DIR, datetime_now().strftime('%Y%m%dT%H%M%S.%f'))
 
     env = os.environ.copy()
     env['GIT_REDACT_COOKIES'] = 'o,SSO,GSSO_Uberproxy'
@@ -2619,7 +2611,15 @@
                    'for the reason of the failure.\n'
                    'Hint: run command below to diagnose common Git/Gerrit '
                    'credential problems:\n'
-                   '  git cl creds-check',
+                   '  git cl creds-check\n'
+                   '\n'
+                   'If git-cl is not working correctly, file a bug under the '
+                   'Infra>SDK component including the files below.\n'
+                   'Review the files before upload, since they might contain '
+                   'sensitive information.\n'
+                   'Set the Restrict-View-Google label so that they are not '
+                   'publicly accessible.\n'
+                   + TRACES_MESSAGE % {'trace_name': trace_name},
                    change_desc)
     finally:
       execution_time = time_time() - before_push
@@ -2632,7 +2632,7 @@
 
       git_push_metadata['execution_time'] = execution_time
       git_push_metadata['exit_code'] = push_returncode
-      self._WriteGitPushTraces(traces_dir, git_push_metadata)
+      self._WriteGitPushTraces(trace_name, traces_dir, git_push_metadata)
 
       self._CleanUpOldTraces()
       gclient_utils.rmtree(traces_dir)