Guys,
Trying to sort out my git issues, I have been picking through switch_all_submodules_to_head_and_clean. I cannot understand what the purpose of the line:
git submodule foreach "$THISSCRIPT $gituser"
That line causes git to step through each of its submodules and call:
"switch_all_submodules_to_head_and_clean <gitUser>"
Why? The script has already done everything at least once before? Dissecting the script it does:
git reset --hard HEAD git clean -dxf git pull git reset --hard HEAD git clean -dxf sed -i "s/system@/$gituser@/g" .gitmodules # or 's/system@//g' git submodule init git submodule update git submodule foreach "git checkout master" git submodule foreach "git pull"
then it does:
git submodule foreach "$THISSCRIPT $gituser"
Which causes this script to be run all over again on each submodule... I have changed this version of my script as follows and it seems to run on each submodule anyway:
git reset --hard HEAD git clean -dxf git pull git reset --hard HEAD git clean -dxf sed -i "s/system@/$gituser@/g" .gitmodules # or 's/system@//g' git submodule init git submodule update --recursive git submodule foreach --recursive "git checkout master" git submodule foreach --recursive "git pull"
git pull gets everything:
16:32 archangel:/dat_f/tde/git> git pull remote: Counting objects: 14, done remote: Finding sources: 100% (12/12) remote: Total 12 (delta 8), reused 12 (delta 8) Unpacking objects: 100% (12/12), done. From http://scm.trinitydesktop.org/scm/git/tde bf1ed1c..3f21128 master -> origin/master Fetching submodule main/tdegraphics remote: Counting objects: 928, done remote: Finding sources: 100% (467/467) remote: Total 467 (delta 462), reused 467 (delta 462) Receiving objects: 100% (467/467), 35.02 KiB, done. Resolving deltas: 100% (462/462), completed with 455 local objects. <snip>
git submodule init inits everything:
16:33 archangel:/dat_f/tde/git> git submodule init Submodule 'experimental' () registered for path 'experimental' Submodule 'main/applications/abakus' () registered for path 'main/applications/abakus' Submodule 'main/applications/adept' () registered for path 'main/applications/adept' <snip>
git submodule update --recursive updates everything:
16:34 archangel:/dat_f/tde/git> git submodule update --recursive Submodule path 'main/applications/abakus': checked out 'af16f2796aed9a860d405ba77193bf4b9b90c21e' Submodule path 'main/applications/kio-locate': checked out '7415e07f61682107169f11e79cc0c8e50fb409a2' <snip>
git submodule foreach --recursive "git checkout master" checks it all out:
16:35 archangel:/dat_f/tde/git> git submodule foreach --recursive "git checkout master" Entering 'experimental' Already on 'master' Entering 'main/applications/abakus' Already on 'master' <snip> Entering 'main/applications/kio-locate' Previous HEAD position was 7415e07... Remove spurious TQ_OBJECT instances Switched to branch 'master' Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded. Entering 'main/applications/kio-locate/cmake' Already on 'master' <snip>
git submodule foreach --recursive "git pull" pulls everything:
16:35 archangel:/dat_f/tde/git> git submodule foreach --recursive "git pull" Entering 'experimental' Already up-to-date. Entering 'main/applications/abakus' remote: Counting objects: 17, done remote: Finding sources: 100% (9/9) remote: Total 9 (delta 8), reused 9 (delta 8) Unpacking objects: 100% (9/9), done. From http://scm.trinitydesktop.org/scm/git/abakus af16f27..45794e3 master -> origin/master Updating af16f27..45794e3 Fast-forward src/abakuslistview.h | 6 +++--- src/editor.h | 4 ++-- src/function.h | 2 +- src/mainwindow.h | 2 +- src/resultlistview.h | 2 +- src/valuemanager.h | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) Entering 'main/applications/abakus/admin' Already up-to-date. Entering 'main/applications/abakus/cmake' Already up-to-date. <snip>
Why step through the modules doing it all over again? On my box, it just crashes with the error:
"This script can only be run from a top level git directory. Exiting..."
What say the experts?
Guys,
Trying to sort out my git issues, I have been picking through switch_all_submodules_to_head_and_clean. I cannot understand what the purpose of the line:
git submodule foreach "$THISSCRIPT $gituser"
That line causes git to step through each of its submodules and call:
"switch_all_submodules_to_head_and_clean <gitUser>"
Why? The script has already done everything at least once before? Dissecting the script it does:
git reset --hard HEAD git clean -dxf git pull git reset --hard HEAD git clean -dxf sed -i "s/system@/$gituser@/g" .gitmodules # or 's/system@//g' git submodule init git submodule update git submodule foreach "git checkout master" git submodule foreach "git pull"
then it does:
git submodule foreach "$THISSCRIPT $gituser"
Which causes this script to be run all over again on each submodule... I have changed this version of my script as follows and it seems to run on each submodule anyway:
git reset --hard HEAD git clean -dxf git pull git reset --hard HEAD git clean -dxf sed -i "s/system@/$gituser@/g" .gitmodules # or 's/system@//g' git submodule init git submodule update --recursive git submodule foreach --recursive "git checkout master" git submodule foreach --recursive "git pull"
git pull gets everything:
16:32 archangel:/dat_f/tde/git> git pull remote: Counting objects: 14, done remote: Finding sources: 100% (12/12) remote: Total 12 (delta 8), reused 12 (delta 8) Unpacking objects: 100% (12/12), done. From http://scm.trinitydesktop.org/scm/git/tde bf1ed1c..3f21128 master -> origin/master Fetching submodule main/tdegraphics remote: Counting objects: 928, done remote: Finding sources: 100% (467/467) remote: Total 467 (delta 462), reused 467 (delta 462) Receiving objects: 100% (467/467), 35.02 KiB, done. Resolving deltas: 100% (462/462), completed with 455 local objects.
<snip>
git submodule init inits everything:
16:33 archangel:/dat_f/tde/git> git submodule init Submodule 'experimental' () registered for path 'experimental' Submodule 'main/applications/abakus' () registered for path 'main/applications/abakus' Submodule 'main/applications/adept' () registered for path 'main/applications/adept'
<snip>
git submodule update --recursive updates everything:
16:34 archangel:/dat_f/tde/git> git submodule update --recursive Submodule path 'main/applications/abakus': checked out 'af16f2796aed9a860d405ba77193bf4b9b90c21e' Submodule path 'main/applications/kio-locate': checked out '7415e07f61682107169f11e79cc0c8e50fb409a2'
<snip>
git submodule foreach --recursive "git checkout master" checks it all out:
16:35 archangel:/dat_f/tde/git> git submodule foreach --recursive "git checkout master" Entering 'experimental' Already on 'master' Entering 'main/applications/abakus' Already on 'master'
<snip> Entering 'main/applications/kio-locate' Previous HEAD position was 7415e07... Remove spurious TQ_OBJECT instances Switched to branch 'master' Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded. Entering 'main/applications/kio-locate/cmake' Already on 'master' <snip>
git submodule foreach --recursive "git pull" pulls everything:
16:35 archangel:/dat_f/tde/git> git submodule foreach --recursive "git pull" Entering 'experimental' Already up-to-date. Entering 'main/applications/abakus' remote: Counting objects: 17, done remote: Finding sources: 100% (9/9) remote: Total 9 (delta 8), reused 9 (delta 8) Unpacking objects: 100% (9/9), done. From http://scm.trinitydesktop.org/scm/git/abakus af16f27..45794e3 master -> origin/master Updating af16f27..45794e3 Fast-forward src/abakuslistview.h | 6 +++--- src/editor.h | 4 ++-- src/function.h | 2 +- src/mainwindow.h | 2 +- src/resultlistview.h | 2 +- src/valuemanager.h | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) Entering 'main/applications/abakus/admin' Already up-to-date. Entering 'main/applications/abakus/cmake' Already up-to-date.
<snip>
Why step through the modules doing it all over again? On my box, it just crashes with the error:
"This script can only be run from a top level git directory. Exiting..."
What say the experts?
This behaviour was needed on my GIT versions to actually initialize the submodules within other submodules (i.e. tdelibs/, which itself is a submodule of tde/, contains a submodule admin/ that would not be initialized normally by GIT).
I can't speak for the new versions of GIT yet. :-)
Tim