REPO_ROOT=/tmp/submodule-diff-example
REPO_DATE_FMT=%H:%M:%S.%N
mkdir ${REPO_ROOT} && git -C ${REPO_ROOT} init && cd ${REPO_ROOT}
date +${REPO_DATE_FMT} >> baserepo && git add baserepo && git commit -m "Base repo commit 1"
for sub in A B C; do
git init submodule${sub}
for iter in $(seq 1 4); do
date +${REPO_DATE_FMT} >> submodule${sub}/subcontent
git -C submodule${sub} add subcontent && git -C submodule${sub} commit -m "Submodule ${sub} initial commit $iter"
done
git submodule add ../bogus-url-${sub} submodule${sub} && \
git commit -m "Add submodule${sub}"
for iter in $(seq 1 2); do
date +${REPO_DATE_FMT} >> submodule${sub}/subcontent
git -C submodule${sub} add subcontent && git -C submodule${sub} commit -m "Submodule ${sub} extra change ${iter}"
done
git add submodule${sub} && git commit -m "Update submodule${sub}"
done
git -C submoduleA reset --hard HEAD~4
git -C submoduleC reset --hard HEAD~2
for sub in B C; do
for iter in $(seq 1 3); do
date +${REPO_DATE_FMT} >> submodule${sub}/subcontent
git -C submodule${sub} add subcontent && git -C submodule${sub} commit -m "Submodule ${sub} stage change ${iter}"
done
done
git add submodule[A-C] && git commit -m "Update all submodules"