mirror of
https://github.com/newren/git-filter-repo.git
synced 2024-07-04 01:15:41 +02:00
filter-repo: fix detection of binary blobs for --replace-text
Detection if blob is binary for the purpose of --replace-text always fails and text replacement is applied to all blobs. This has changed going to python3. With python2 the same code would still be wrong but would manifest differently. In the construct 'for x in b"..."' the x is - of type <int> in python3 - of type <str> in python2 thus in python3 condition 'x == b"\0"' can not be true for any x due to type difference. Further, the search was supposed to look for NUL byte and not 0 character, thus change to b"\0" instead of b"0". Signed-off-by: rndbit <rndbit@filter.bitman.net>
This commit is contained in:
parent
d8e858aeca
commit
9cfe2b4090
|
@ -3261,8 +3261,10 @@ class RepoFilter(object):
|
|||
if blob.original_id in self._args.strip_blobs_with_ids:
|
||||
blob.skip()
|
||||
|
||||
if self._args.replace_text and \
|
||||
not any(x == b"0" for x in blob.data[0:8192]):
|
||||
if ( self._args.replace_text
|
||||
# not (if blob contains zero byte in the first 8Kb, that is, if blob is binary data)
|
||||
and not b"\0" in blob.data[0:8192]
|
||||
):
|
||||
for literal, replacement in self._args.replace_text['literals']:
|
||||
blob.data = blob.data.replace(literal, replacement)
|
||||
for regex, replacement in self._args.replace_text['regexes']:
|
||||
|
|
Loading…
Reference in New Issue
Block a user