Feature Request: Per-Repository Dependency File Configuration
Problem Statement
Currently, when recursive mode is enabled, LsiGitCheckout looks for dependency files in the root directory of each checked-out repository using the same filename as the script's input file. This approach has limitations:
- Fixed location: Dependency files must be in the repository root
- Fixed naming: All repositories must use the same dependency filename
- Organizational constraints: Cannot accommodate different repository structures or naming conventions
Proposed Solution
Add per-repository configuration options to customize dependency file location and naming:
New JSON Fields
{
"Repository URL": "https://github.com/company/repo.git",
"Base Path": "repos/repo",
"Tag": "v1.0.0",
"Dependency File Path": "config", // NEW: Optional relative path
"Dependency File Name": "custom-deps.json" // NEW: Optional custom filename
}
Field Specifications
Use Cases
1. Monorepo with Organized Structure
{
"Repository URL": "https://github.com/company/monorepo.git",
"Base Path": "repos/monorepo",
"Tag": "v2.1.0",
"Dependency File Path": "build/config",
"Dependency File Name": "external-dependencies.json"
}
- Looks for:
repos/monorepo/build/config/external-dependencies.json
2. Legacy Project with Different Conventions
{
"Repository URL": "https://github.com/company/legacy.git",
"Base Path": "repos/legacy",
"Tag": "v1.5.0",
"Dependency File Path": "scripts",
"Dependency File Name": "requirements.json"
}
- Looks for:
repos/legacy/scripts/requirements.json
3. Mixed Environment
Some repositories use default location, others use custom:
[
{
"Repository URL": "https://github.com/company/standard-repo.git",
"Base Path": "repos/standard",
"Tag": "v1.0.0"
// Uses default: repos/standard/dependencies.json
},
{
"Repository URL": "https://github.com/company/custom-repo.git",
"Base Path": "repos/custom",
"Tag": "v2.0.0",
"Dependency File Path": "config",
"Dependency File Name": "deps.json"
// Uses custom: repos/custom/config/deps.json
}
]
Benefits
- Flexibility: Accommodate different repository organizational structures
- Backward Compatibility: Existing configurations continue to work unchanged
- Mixed Environments: Support both standard and custom layouts in the same project
- Better Organization: Allow teams to organize dependency files according to their standards
- Legacy Support: Integrate repositories with existing dependency file naming conventions
Implementation Requirements
Acceptance Criteria
Feature Request: Per-Repository Dependency File Configuration
Problem Statement
Currently, when recursive mode is enabled, LsiGitCheckout looks for dependency files in the root directory of each checked-out repository using the same filename as the script's input file. This approach has limitations:
Proposed Solution
Add per-repository configuration options to customize dependency file location and naming:
New JSON Fields
{ "Repository URL": "https://github.com/company/repo.git", "Base Path": "repos/repo", "Tag": "v1.0.0", "Dependency File Path": "config", // NEW: Optional relative path "Dependency File Name": "custom-deps.json" // NEW: Optional custom filename }Field Specifications
"Dependency File Path" (optional):
"config","build/scripts","tools/dependencies""Dependency File Name" (optional):
"external-deps.json","requirements.json","project-deps.json"Use Cases
1. Monorepo with Organized Structure
{ "Repository URL": "https://github.com/company/monorepo.git", "Base Path": "repos/monorepo", "Tag": "v2.1.0", "Dependency File Path": "build/config", "Dependency File Name": "external-dependencies.json" }repos/monorepo/build/config/external-dependencies.json2. Legacy Project with Different Conventions
{ "Repository URL": "https://github.com/company/legacy.git", "Base Path": "repos/legacy", "Tag": "v1.5.0", "Dependency File Path": "scripts", "Dependency File Name": "requirements.json" }repos/legacy/scripts/requirements.json3. Mixed Environment
Some repositories use default location, others use custom:
[ { "Repository URL": "https://github.com/company/standard-repo.git", "Base Path": "repos/standard", "Tag": "v1.0.0" // Uses default: repos/standard/dependencies.json }, { "Repository URL": "https://github.com/company/custom-repo.git", "Base Path": "repos/custom", "Tag": "v2.0.0", "Dependency File Path": "config", "Dependency File Name": "deps.json" // Uses custom: repos/custom/config/deps.json } ]Benefits
Implementation Requirements
Acceptance Criteria