Spaces:
Build error
Build error
""" | |
Utilities for handling binary files and patch generation in SWE-bench evaluation. | |
""" | |
def remove_binary_diffs(patch_text): | |
""" | |
Remove binary file diffs from a git patch. | |
Args: | |
patch_text (str): The git patch text | |
Returns: | |
str: The cleaned patch text with binary diffs removed | |
""" | |
lines = patch_text.splitlines() | |
cleaned_lines = [] | |
block = [] | |
is_binary_block = False | |
for line in lines: | |
if line.startswith('diff --git '): | |
if block and not is_binary_block: | |
cleaned_lines.extend(block) | |
block = [line] | |
is_binary_block = False | |
elif 'Binary files' in line: | |
is_binary_block = True | |
block.append(line) | |
else: | |
block.append(line) | |
if block and not is_binary_block: | |
cleaned_lines.extend(block) | |
return '\n'.join(cleaned_lines) | |
def remove_binary_files_from_git(): | |
""" | |
Generate a bash command to remove binary files from git staging. | |
Returns: | |
str: A bash command that removes binary files from git staging | |
""" | |
return """ | |
for file in $(git status --porcelain | grep -E "^(M| M|\\?\\?|A| A)" | cut -c4-); do | |
if [ -f "$file" ] && (file "$file" | grep -q "executable" || git check-attr binary "$file" | grep -q "binary: set"); then | |
git rm -f "$file" 2>/dev/null || rm -f "$file" | |
echo "Removed: $file" | |
fi | |
done | |
""".strip() | |