Skip to content

[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

  1. Add is_file_ignored(relative_path: &str) method to CoreGitaliskRepository in Rust
  2. Add is_directory_ignored(relative_path: &str) method to CoreGitaliskRepository in Rust
  3. Implement both methods using git's check-ignore command for accurate gitignore pattern matching
  4. Handle edge cases like tracked files that appear in gitignore, .gitkeep files
  5. Expose both methods through NAPI bindings to Node.js GitaliskRepository class as isFileIgnored() and isDirectoryIgnored()
  6. 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-ignore command for reliable gitignore pattern matching
  • Check git tracking status first (tracked files override gitignore)
  • Handle repositories without gitignore files

Links / References