mirror of
https://github.com/qodo-ai/pr-agent.git
synced 2025-07-03 12:20:38 +08:00
Add file ignore functionality and update documentation for ignore patterns
This commit is contained in:
@ -4,7 +4,7 @@ import re
|
|||||||
from pr_agent.config_loader import get_settings
|
from pr_agent.config_loader import get_settings
|
||||||
|
|
||||||
|
|
||||||
def filter_ignored(files):
|
def filter_ignored(files, platform = 'github'):
|
||||||
"""
|
"""
|
||||||
Filter out files that match the ignore patterns.
|
Filter out files that match the ignore patterns.
|
||||||
"""
|
"""
|
||||||
@ -29,17 +29,14 @@ def filter_ignored(files):
|
|||||||
|
|
||||||
# keep filenames that _don't_ match the ignore regex
|
# keep filenames that _don't_ match the ignore regex
|
||||||
if files and isinstance(files, list):
|
if files and isinstance(files, list):
|
||||||
if hasattr(files[0], 'filename'): # github
|
|
||||||
for r in compiled_patterns:
|
for r in compiled_patterns:
|
||||||
|
if platform == 'github':
|
||||||
files = [f for f in files if (f.filename and not r.match(f.filename))]
|
files = [f for f in files if (f.filename and not r.match(f.filename))]
|
||||||
elif hasattr(files[0], 'new') and hasattr(files[0].new, 'path'): # bitbucket
|
elif platform == 'bitbucket':
|
||||||
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], dict) and 'new_path' in files[0]: # gitlab
|
elif platform == 'gitlab':
|
||||||
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
|
elif platform == 'azure':
|
||||||
for r in compiled_patterns:
|
|
||||||
files = [f for f in files if not r.match(f)]
|
files = [f for f in files if not r.match(f)]
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -286,7 +286,7 @@ class AzureDevopsProvider(GitProvider):
|
|||||||
# diffs = list(set(diffs))
|
# diffs = list(set(diffs))
|
||||||
|
|
||||||
diffs_original = diffs
|
diffs_original = diffs
|
||||||
diffs = filter_ignored(diffs_original)
|
diffs = filter_ignored(diffs_original, 'azure')
|
||||||
if diffs_original != diffs:
|
if diffs_original != diffs:
|
||||||
try:
|
try:
|
||||||
get_logger().info(f"Filtered out [ignore] files for pull request:", extra=
|
get_logger().info(f"Filtered out [ignore] files for pull request:", extra=
|
||||||
|
@ -125,7 +125,7 @@ class BitbucketProvider(GitProvider):
|
|||||||
return self.diff_files
|
return self.diff_files
|
||||||
|
|
||||||
diffs_original = list(self.pr.diffstat())
|
diffs_original = list(self.pr.diffstat())
|
||||||
diffs = filter_ignored(diffs_original)
|
diffs = filter_ignored(diffs_original, 'bitbucket')
|
||||||
if diffs != diffs_original:
|
if diffs != diffs_original:
|
||||||
try:
|
try:
|
||||||
names_original = [d.new.path for d in diffs_original]
|
names_original = [d.new.path for d in diffs_original]
|
||||||
|
@ -87,7 +87,7 @@ class GitLabProvider(GitProvider):
|
|||||||
|
|
||||||
# filter files using [ignore] patterns
|
# filter files using [ignore] patterns
|
||||||
diffs_original = self.mr.changes()['changes']
|
diffs_original = self.mr.changes()['changes']
|
||||||
diffs = filter_ignored(diffs_original)
|
diffs = filter_ignored(diffs_original, 'gitlab')
|
||||||
if diffs != diffs_original:
|
if diffs != diffs_original:
|
||||||
try:
|
try:
|
||||||
names_original = [diff['new_path'] for diff in diffs_original]
|
names_original = [diff['new_path'] for diff in diffs_original]
|
||||||
|
Reference in New Issue
Block a user