[git_trace2] Add logs for critical cmds
Trace logs emitted from repo are not useful on error for many critical
commands. This change adds errors for critical commands to trace logs.
Change-Id: Ideb9358bee31e540bd84a94327a09ff9b0246a77
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/373814
Reviewed-by: Joanna Wang <jojwang@google.com>
Tested-by: Josip Sokcevic <sokcevic@google.com>
Commit-Queue: Josip Sokcevic <sokcevic@google.com>
Reviewed-by: Gavin Mak <gavinmak@google.com>
diff --git a/git_trace2_event_log.py b/git_trace2_event_log.py
index 820cbac..46bd5e4 100644
--- a/git_trace2_event_log.py
+++ b/git_trace2_event_log.py
@@ -198,9 +198,11 @@
event["value"] = value
self._log.append(event)
- def ErrorEvent(self, msg, fmt):
+ def ErrorEvent(self, msg, fmt=None):
"""Append a 'error' event to the current log."""
error_event = self._CreateEventDict("error")
+ if fmt is None:
+ fmt = msg
error_event["msg"] = msg
error_event["fmt"] = fmt
self._log.append(error_event)
diff --git a/subcmds/init.py b/subcmds/init.py
index b5c2e3b..9946466 100644
--- a/subcmds/init.py
+++ b/subcmds/init.py
@@ -341,10 +341,12 @@
quiet=opt.quiet,
)
except wrapper.CloneFailure:
+ err_msg = "fatal: double check your --repo-rev setting."
print(
- "fatal: double check your --repo-rev setting.",
+ err_msg,
file=sys.stderr,
)
+ self.git_event_log.ErrorEvent(err_msg)
sys.exit(1)
branch = rp.GetBranch("default")
branch.merge = remote_ref
diff --git a/subcmds/rebase.py b/subcmds/rebase.py
index dc4f580..c0e83ad 100644
--- a/subcmds/rebase.py
+++ b/subcmds/rebase.py
@@ -206,7 +206,9 @@
ret += 1
if ret:
- out.fail("%i projects had errors", ret)
+ msg_fmt = "%d projects had errors"
+ self.git_event_log.ErrorEvent(msg_fmt % (ret), msg_fmt)
+ out.fail(msg_fmt, ret)
out.nl()
return ret
diff --git a/subcmds/start.py b/subcmds/start.py
index d7772b3..9baf425 100644
--- a/subcmds/start.py
+++ b/subcmds/start.py
@@ -168,4 +168,6 @@
% (p.RelPath(local=opt.this_manifest_only), nb),
file=sys.stderr,
)
+ msg_fmt = "cannot start %d project(s)"
+ self.git_event_log.ErrorEvent(msg_fmt % (len(err)), msg_fmt)
sys.exit(1)
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 68a076d..8f73d27 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -1695,32 +1695,29 @@
# If we saw an error, exit with code 1 so that other scripts can check.
if err_event.is_set():
- print("\nerror: Unable to fully sync the tree.", file=sys.stderr)
+ # Add a new line so it's easier to read.
+ print("\n", file=sys.stderr)
+
+ def print_and_log(err_msg):
+ self.git_event_log.ErrorEvent(err_msg)
+ print(err_msg, file=sys.stderr)
+
+ print_and_log("error: Unable to fully sync the tree")
if err_network_sync:
- print(
- "error: Downloading network changes failed.",
- file=sys.stderr,
- )
+ print_and_log("error: Downloading network changes failed.")
if err_update_projects:
- print(
- "error: Updating local project lists failed.",
- file=sys.stderr,
- )
+ print_and_log("error: Updating local project lists failed.")
if err_update_linkfiles:
- print(
- "error: Updating copyfiles or linkfiles failed.",
- file=sys.stderr,
- )
+ print_and_log("error: Updating copyfiles or linkfiles failed.")
if err_checkout:
- print(
- "error: Checking out local projects failed.",
- file=sys.stderr,
- )
+ print_and_log("error: Checking out local projects failed.")
if err_results:
+ # Don't log repositories, as it may contain sensitive info.
print(
"Failing repos:\n%s" % "\n".join(err_results),
file=sys.stderr,
)
+ # Not useful to log.
print(
'Try re-running with "-j1 --fail-fast" to exit at the first '
"error.",
diff --git a/subcmds/upload.py b/subcmds/upload.py
index 63216af..f9c5e7f 100644
--- a/subcmds/upload.py
+++ b/subcmds/upload.py
@@ -657,6 +657,7 @@
branch.uploaded = True
except UploadError as e:
+ self.git_event_log.ErrorEvent("upload error: " + str(e))
branch.error = e
branch.uploaded = False
have_errors = True