blob: 100de133aafd6be2ba6e44b93cc46bbf27dbadd7 [file] [log] [blame]
- name: Prepare git submodules
shell: |
set -ex
jq -r '.projects | .[] | .src_dir ' ~/zuul-env.json | while read PROJECT; do
pushd "{{ ansible_user_dir }}/${PROJECT}"
# 1) Adjust the origin's URL so that it points to its filesystem location.
# This makes relative URLs in submodules work.
git config --get remote.origin.url > /dev/null && git config remote.origin.url "{{ ansible_user_dir }}/${PROJECT}" || true
# 2) Prepare an alias for each repository, appending the .git suffix.
# E.g. Boost uses submodule URLs which end with a .git trailing suffix.
# That happens to be handled by many git servers automagically.
# Instead of rewriting the submodule URLs within each repo (which would either mark
# the repo dirty, or change its hash), use a big hammer and provide these
# "compatibility" repository names.
# If both a `repo` and `repo.git` already exist, then we're screwed.
ln -s $(basename "${PROJECT}") ../$(basename "${PROJECT}").git
popd
done
# 3) Update submodules via calling out to git
cd "$(jq -r '.project.src_dir' ~/zuul-env.json)"
git submodule update --init --recursive
# 4) Undo changes made in step 1
jq -r '.projects | .[] | .src_dir ' ~/zuul-env.json | while read PROJECT; do
pushd "{{ ansible_user_dir }}/${PROJECT}"
git config --get remote.origin.url > /dev/null && git config remote.origin.url file:///dev/null || true
popd
done