summaryrefslogtreecommitdiff
path: root/git
diff options
context:
space:
mode:
Diffstat (limited to 'git')
-rw-r--r--git/cmd.py4
-rw-r--r--git/util.py13
2 files changed, 8 insertions, 9 deletions
diff --git a/git/cmd.py b/git/cmd.py
index 222a2408..c571c486 100644
--- a/git/cmd.py
+++ b/git/cmd.py
@@ -82,8 +82,8 @@ def handle_process_output(process, stdout_handler, stderr_handler,
line = line.decode(defenc)
handler(line)
except Exception as ex:
- log.error("Pumping %r of cmd(%s) failed due to: %r", name, cmdline, ex)
- raise CommandError(['<%s-pump>' % name] + cmdline, ex) from ex
+ log.error("Pumping %r of cmd(%s) failed due to: %r", name, remove_password_if_present(cmdline), ex)
+ raise CommandError(['<%s-pump>' % name] + remove_password_if_present(cmdline), ex) from ex
finally:
stream.close()
diff --git a/git/util.py b/git/util.py
index e9d183d9..80985df4 100644
--- a/git/util.py
+++ b/git/util.py
@@ -343,13 +343,13 @@ def expand_path(p, expand_vars=True):
def remove_password_if_present(cmdline):
"""
Parse any command line argument and if on of the element is an URL with a
- password, replace it by stars. If nothing found just returns a copy of the
- command line as-is.
+ password, replace it by stars (in-place).
+
+ If nothing found just returns the command line as-is.
This should be used for every log line that print a command line.
"""
- redacted_cmdline = []
- for to_parse in cmdline:
+ for index, to_parse in enumerate(cmdline):
try:
url = urlsplit(to_parse)
# Remove password from the URL if present
@@ -358,12 +358,11 @@ def remove_password_if_present(cmdline):
edited_url = url._replace(
netloc=url.netloc.replace(url.password, "*****"))
- redacted_cmdline.append(urlunsplit(edited_url))
+ cmdline[index] = urlunsplit(edited_url)
except ValueError:
- redacted_cmdline.append(to_parse)
# This is not a valid URL
pass
- return redacted_cmdline
+ return cmdline
#} END utilities