Skip to content

Use git-init templates (clone) and git config without --global (fetch) to disable recurseSubmodules

What does this MR do?

The Runner unconditionally disables submodules for the repository it is working on. This commit:

  • Stops doing this using git config --global
  • For fetch, uses git config after git init
  • For clone, uses a custom git template directory to apply the config to the created .git/config file

Why was this MR needed?

Using git config --global modifies the user's ~/.gitconfig, which is surprising (you may want to test the runner using your own user, for instance). For Git 1.7.1, which is the minimum version we need to support, a custom template directory is the only feasible way to get git clone to respect custom configuration directives at fetch time.

An alternative would be to re-implement git clone by running the plumbing commands in the correct sequence.

Are there points in the code the reviewer needs to double check?

Does this MR meet the acceptance criteria?

  • CHANGELOG entry added
  • Documentation created/updated
  • Tests
    • Added for this feature/bug
    • All builds are passing
  • Branch has no merge conflicts with master (if you do - rebase it please)

What are the relevant issue numbers?

Closes #1469 (closed)

Merge request reports