mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-04 12:50:38 +08:00
Add file ignore functionality and update documentation for ignore patterns
This commit is contained in:
@ -38,6 +38,9 @@ def filter_ignored(files):
|
|||||||
elif isinstance(files[0], dict) and 'new_path' in files[0]: # gitlab
|
elif isinstance(files[0], dict) and 'new_path' in files[0]: # gitlab
|
||||||
for r in compiled_patterns:
|
for r in compiled_patterns:
|
||||||
files = [f for f in files if (f['new_path'] and not r.match(f['new_path']))]
|
files = [f for f in files if (f['new_path'] and not r.match(f['new_path']))]
|
||||||
|
elif isinstance(files[0], str): # azure devops
|
||||||
|
for r in compiled_patterns:
|
||||||
|
files = [f for f in files if not r.match(f)]
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Could not filter file list: {e}")
|
print(f"Could not filter file list: {e}")
|
||||||
|
@ -15,7 +15,7 @@ def filter_bad_extensions(files):
|
|||||||
return [f for f in files if f.filename is not None and is_valid_file(f.filename)]
|
return [f for f in files if f.filename is not None and is_valid_file(f.filename)]
|
||||||
|
|
||||||
|
|
||||||
def is_valid_file(filename):
|
def is_valid_file(filename: str):
|
||||||
return filename.split('.')[-1] not in bad_extensions
|
return filename.split('.')[-1] not in bad_extensions
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ import os
|
|||||||
from typing import Optional, Tuple
|
from typing import Optional, Tuple
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
|
from ..algo.file_filter import filter_ignored
|
||||||
from ..log import get_logger
|
from ..log import get_logger
|
||||||
from ..algo.language_handler import is_valid_file
|
from ..algo.language_handler import is_valid_file
|
||||||
from ..algo.utils import clip_tokens, find_line_number_of_relevant_line_in_file, load_large_diff
|
from ..algo.utils import clip_tokens, find_line_number_of_relevant_line_in_file, load_large_diff
|
||||||
@ -284,8 +285,20 @@ class AzureDevopsProvider(GitProvider):
|
|||||||
#
|
#
|
||||||
# diffs = list(set(diffs))
|
# diffs = list(set(diffs))
|
||||||
|
|
||||||
|
diffs_original = diffs
|
||||||
|
diffs = filter_ignored(diffs_original)
|
||||||
|
if diffs_original != diffs:
|
||||||
|
try:
|
||||||
|
get_logger().info(f"Filtered out [ignore] files for pull request:", extra=
|
||||||
|
{"files": diffs_original, # diffs is just a list of names
|
||||||
|
"filtered_files": diffs})
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
invalid_files_names = []
|
||||||
for file in diffs:
|
for file in diffs:
|
||||||
if not is_valid_file(file):
|
if not is_valid_file(file):
|
||||||
|
invalid_files_names.append(file)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
version = GitVersionDescriptor(
|
version = GitVersionDescriptor(
|
||||||
@ -350,6 +363,8 @@ class AzureDevopsProvider(GitProvider):
|
|||||||
edit_type=edit_type,
|
edit_type=edit_type,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
get_logger().info(f"Invalid files: {invalid_files_names}")
|
||||||
|
|
||||||
self.diff_files = diff_files
|
self.diff_files = diff_files
|
||||||
return diff_files
|
return diff_files
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
Reference in New Issue
Block a user