I just stumbled accross a weird bug.
I have this project with recursive submodules. One of the submodules has an empty .gitmodules
file. After running a recursive url rewrite, sed exits with a non-zero exit code and fails the whole rewrite script. I found that using --verbose.
Below, you will find an example log with obfuscated paths and names:
Entering 'path/to/submoduleX'
+ url_rewrite
+ set -euo pipefail
+ '[' true = true ']'
+ set -x
+ local toplevel
++ git rev-parse --show-toplevel
+ toplevel=/var/jenkins/workspace/blablabla/path/to/submoduleX
+ local gitmodules
+ gitmodules=/var/jenkins/workspace/blablabla/path/to/submoduleX/.gitmodules
+ cd /var/jenkins/workspace/blablabla/path/to/submoduleX
+ '[' '!' -r /var/jenkins/workspace/blablabla/path/to/submoduleX/.gitmodules ']'
+ sed -nre 's/^\[submodule \"(.*)\"]$/\1\x0/p' /var/jenkins/workspace/blablabla/path/to/submoduleX/.gitmodules
+ IFS=
+ read -rd '' submodule
+ xargs -0 -n1 printf '%b\0'
+ tr -d '\n'
+ submodule_url_rewrite ''
+ local name
+ name=
+ shift
+ local toplevel
++ git rev-parse --show-toplevel
+ toplevel=/var/jenkins/workspace/blablabla/path/to/submoduleX
+ local old_url
++ git config --file=/var/jenkins/workspace/blablabla/path/to/submoduleX/.gitmodules submodule..url
+ old_url=
Stopping at 'path/to/submoduleX'; script returned non-zero status.