Decode "git cl" error messages to avoid printing Python bytes
We were not decoding the stdout bytes before printing them when git
commands returned an error status. This CL fixes that.
Before:
Command "git cherry-pick FETCH_HEAD" failed.
b'Auto-merging chrome/browser/ui/web_applications/app_browser_controller.cc\nAuto-merging chrome/browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc\nCONFLICT (content): Merge conflict in chrome/browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc\nAuto-merging chrome/browser/ui/views/frame/browser_non_client_frame_view.cc\nAuto-merging chrome/browser/ui/views/frame/browser_frame.h\nAuto-merging chrome/browser/ui/views/frame/browser_frame.cc\n'
After:
Command "git cherry-pick FETCH_HEAD" failed.
Auto-merging chrome/browser/ui/web_applications/app_browser_controller.cc
Auto-merging chrome/browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc
CONFLICT (content): Merge conflict in chrome/browser/ui/views/frame/opaque_browser_frame_view_browsertest.cc
Auto-merging chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
Auto-merging chrome/browser/ui/views/frame/browser_frame.h
Auto-merging chrome/browser/ui/views/frame/browser_frame.cc
Change-Id: I162e666ca9f3a70259e6178d2e6d3b72f15b1f7b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2310016
Auto-Submit: Alan Cutter <alancutter@chromium.org>
Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
Commit-Queue: Edward Lesmes <ehmaldonado@chromium.org>
diff --git a/git_cl.py b/git_cl.py
index da2b4bc..d951c5a 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -175,9 +175,8 @@
except subprocess2.CalledProcessError as e:
logging.debug('Failed running %s', args)
if not error_ok:
- DieWithError(
- 'Command "%s" failed.\n%s' % (
- ' '.join(args), error_message or e.stdout or ''))
+ message = error_message or e.stdout.decode('utf-8', 'replace') or ''
+ DieWithError('Command "%s" failed.\n%s' % (' '.join(args), message))
return e.stdout.decode('utf-8', 'replace')