[gitalisk][repository] Add file and directory ignore checking methods in gitalisk
Issue Description
Problem to Solve
The GitaliskRepository class needs direct methods to check if files or directories are ignored by git rules. This forces inefficient workarounds in the Language Server adapter layer that query all repository files to determine ignore status.
Proposal
- Add
is_file_ignored(relative_path: &str)method to CoreGitaliskRepository in Rust - Add
is_directory_ignored(relative_path: &str)method to CoreGitaliskRepository in Rust - Implement both methods using git's
check-ignorecommand for accurate gitignore pattern matching - Handle edge cases like tracked files that appear in gitignore, .gitkeep files
- Expose both methods through NAPI bindings to Node.js GitaliskRepository class as
isFileIgnored()andisDirectoryIgnored() - Update TypeScript definitions with new methods
Further Details
Acceptance Criteria:
-
is_file_ignored()method correctly identifies ignored files based on gitignore rules -
is_directory_ignored()method correctly identifies ignored directories - Methods handle tracked files that appear in gitignore (tracked files are never ignored)
- TypeScript definitions updated with new methods
- Comprehensive tests for both methods with various gitignore scenarios
Implementation Notes:
- Use
git check-ignorecommand for reliable gitignore pattern matching - Check git tracking status first (tracked files override gitignore)
- Handle repositories without gitignore files
Links / References
- Epic: Replace Repository Service with Gitalisk (gitlab-org/rust&14)