diff options
author | Sebastian Thiel <sebastian.thiel@icloud.com> | 2019-09-30 14:21:45 +0200 |
---|---|---|
committer | Sebastian Thiel <sebastian.thiel@icloud.com> | 2019-09-30 14:21:45 +0200 |
commit | 193df8e795de95432b1b73f01f7a3e3c93f433ac (patch) | |
tree | 6c68ad8ebf14c1c3b996db85cbb6f8f62ed7b679 | |
parent | 0dd99fe29775d6abd05029bc587303b6d37e3560 (diff) | |
download | gitpython-193df8e795de95432b1b73f01f7a3e3c93f433ac.tar.gz |
Revert "Remove control character stripping."
This reverts commit b207f0e8910a478ad5aba17d19b2b00bf2cd9684.
-rw-r--r-- | git/util.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/git/util.py b/git/util.py index fd95723b..7c07b0f3 100644 --- a/git/util.py +++ b/git/util.py @@ -364,7 +364,6 @@ class RemoteProgress(object): '_seen_ops', 'error_lines', # Lines that started with 'error:' or 'fatal:'. 'other_lines') # Lines not denoting progress (i.e.g. push-infos). - re_ansi_escape = re.compile(r'\x1B[@-_][0-?]*[ -/]*[@-~]') re_op_absolute = re.compile(r"(remote: )?([\w\s]+):\s+()(\d+)()(.*)") re_op_relative = re.compile(r"(remote: )?([\w\s]+):\s+(\d+)% \((\d+)/(\d+)\)(.*)") @@ -393,7 +392,17 @@ class RemoteProgress(object): # find escape characters and cut them away - regex will not work with # them as they are non-ascii. As git might expect a tty, it will send them - line = self.re_ansi_escape.sub('', line) + last_valid_index = None + for i, c in enumerate(reversed(line)): + if ord(c) < 32: + # its a slice index + last_valid_index = -i - 1 + # END character was non-ascii + # END for each character in line + if last_valid_index is not None: + line = line[:last_valid_index] + # END cut away invalid part + line = line.rstrip() cur_count, max_count = None, None match = self.re_op_relative.match(line) |