[gitalisk][repository] Add submodule support in gitalisk
Problem to Solve
The CoreGitaliskRepository needs the ability to detect submodules in a repository and list them.
Proposal
- Add
get_submodules()method to CoreGitaliskRepository in Rust - Implement submodule detection using
git submodule statuscommand - Parse git submodule output to extract submodule path, URL, commit hash, and status information
- Handle repositories without submodules gracefully (return empty list)
- Expose method through NAPI bindings to Node.js as
getSubmodules() - Update TypeScript definitions with GitSubmodule type and method signature
Further Details
Acceptance Criteria:
- Returns proper GitSubmodule objects with path, URL, commit hash, and status
- Returns empty array for repositories without submodules
- Handles invalid or corrupted submodule configurations gracefully
- TypeScript definitions include proper GitSubmodule type structure
- Test coverage for repositories with and without submodules
Implementation Notes:
- Use
git submodule status --porcelainfor machine-readable output - Parse submodule status indicators (initialized, uninitialized, etc.)
- Use
git config -f .gitmodules --listfor additional submodule metadata if needed - Handle edge cases like missing or corrupted .gitmodules files
Links / References
- Epic: Replace Repository Service with Gitalisk (gitlab-org/rust&14)