makes
makes copied to clipboard
`m . <job>` doesn't clone git submodules and lacks git lfs support
When running m . <job> to execute a job from the current repository's makes.nix, the framework clones the local repository into a temporary directory but fails to include git submodules and doesn't have git lfs available during the cloning process. This creates significant limitations for our projects that use git submodules and/or git lfs when trying to use makes for CI/CD tasks.
Expected Behavior
- When executing
m . <job>, the command should clone the local repository along with all initialized git submodules - Git LFS should be available during the cloning/copying process to handle LFS-tracked files properly
Current Behavior
- Only tracked and modified files from the main repository are copied to the temporary directory
- Git submodules are completely ignored and not included
- Git LFS is not available during the cloning process, causing failures with our repositories that have git hooks (e.g. post-checkout) and depend on git lfs
Steps to Reproduce
- Create a git repository with initialized submodules and/or git lfs tracked files
- Add a
makes.nixfile with a job definition - Run
m . <job> - Observe that submodules are missing from the temporary directory
- If using git lfs with hooks, observe cloning failures due to missing git lfs
Suggested Fix
- Modify the repository cloning logic to include initialized submodule files when copying local repositories
- Ensure git lfs is available in the environment during the cloning/copying process
- Optional: Consider adding configuration options to control submodule cloning behavior if needed for performance reasons