feat: implement .gitignore support in file watcher
This commit is contained in:
@@ -47,10 +47,15 @@ class GitEventHandler(FileSystemEventHandler):
|
|||||||
file_path = event.src_path if action != "rename" else event.dest_path
|
file_path = event.src_path if action != "rename" else event.dest_path
|
||||||
file_name = os.path.basename(file_path)
|
file_name = os.path.basename(file_path)
|
||||||
|
|
||||||
# Check if any part of the path is .git
|
# Check if any part of the path is .git or if it's the log file
|
||||||
if ".git" in file_path.split(os.sep) or file_name == "git_monitor.log":
|
if ".git" in file_path.split(os.sep) or file_name == "git_monitor.log":
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# NEW: Respect .gitignore
|
||||||
|
if git_manager.is_ignored(file_path):
|
||||||
|
logger.info(f"Ignored: {file_path} (matches .gitignore)")
|
||||||
|
return
|
||||||
|
|
||||||
display_name = custom_file_name if custom_file_name else file_name
|
display_name = custom_file_name if custom_file_name else file_name
|
||||||
logger.info(f"File event: {action} on {display_name}")
|
logger.info(f"File event: {action} on {display_name}")
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,18 @@ class GitManager:
|
|||||||
except (exc.InvalidGitRepositoryError, exc.NoSuchPathError):
|
except (exc.InvalidGitRepositoryError, exc.NoSuchPathError):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def is_ignored(self, file_path):
|
||||||
|
"""Check if a file is ignored by .gitignore rules."""
|
||||||
|
if not self.repo:
|
||||||
|
return False
|
||||||
|
try:
|
||||||
|
# git check-ignore returns the path if it is ignored
|
||||||
|
ignored_files = self.repo.ignored(file_path)
|
||||||
|
return len(ignored_files) > 0
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error checking ignore status for {file_path}: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
def commit_change(self, action, file_name):
|
def commit_change(self, action, file_name):
|
||||||
if not self.repo:
|
if not self.repo:
|
||||||
logger.error("No repository loaded for commit.")
|
logger.error("No repository loaded for commit.")
|
||||||
|
|||||||
Reference in New Issue
Block a user