lint-history: fix binary blob detection

We had a lingering issue in the conversion from python2 to python3; as
reported by @thebrandre on GitHub:

    any(x==b'1' for x in b"123")
    # returns True in Python2 and False in Python3 because different
    # types are returned on iteration:
    [type(x) for x in b"123"]
    # Python2: [<type 'str'>, <type 'str'>, <type 'str'>]
    # Python3: [<class 'int'>, <class 'int'>, <class 'int'>]

Replace the
    any(x==b"0" for x in blob.data[0:8192])
construct with
    b"\0" in blob.data[0:8192]
to fix this.

Suggested-by: @thebrandre on GitHub
Signed-off-by: Elijah Newren <newren@gmail.com>
This commit is contained in:
Elijah Newren 2021-03-29 23:19:16 -07:00
parent cf84943982
commit 97a1613f81

View File

@ -30,7 +30,7 @@ near the top of git-filter-repo.
# Technically, if you are only running on all non-binary files and don't care
# about filenames, then this program could be replaced by a "one-liner"; e.g.
# git filter-repo --force --blob-callback '
# if not any(x == b"0" for x in blob.data[0:8192]):
# if not b"\0" in blob.data[0:8192]:
# filename = '.git/info/tmpfile'
# with open(filename, "wb") as f:
# f.write(blob.data)
@ -129,7 +129,7 @@ def lint_with_real_filenames(commit, metadata):
change.blob_id = blob.id
def lint_non_binary_blobs(blob, metadata):
if not any(x == b"0" for x in blob.data[0:8192]):
if not b"\0" in blob.data[0:8192]:
filename = '.git/info/tmpfile'
with open(filename, "wb") as f:
f.write(blob.data)