From 6b51421fe185927ff394782a528c4a28081e179d Mon Sep 17 00:00:00 2001 From: eleonore12345 Date: Sat, 6 Jul 2024 17:43:57 +0200 Subject: [PATCH] =?UTF-8?q?avec=20submodules=20mais=20encore=20des=20bugs?= =?UTF-8?q?=20=C3=A0=20r=C3=A9gler!=20et=20avec=20reflexion=20sur=20la=20f?= =?UTF-8?q?a=C3=A7on=20de=20fetch=C2=A7merge=C2=A7checkout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- creation_repo.sh | 23 +++++- notes.odt | Bin 96880 -> 99230 bytes performance_tests.sh | 183 +++++++++++++++++++++++++++++++------------ 3 files changed, 152 insertions(+), 54 deletions(-) diff --git a/creation_repo.sh b/creation_repo.sh index 5d92737..4fca7d3 100755 --- a/creation_repo.sh +++ b/creation_repo.sh @@ -1,5 +1,5 @@ #!/bin/bash - +. driglibash-base Help() { echo " @@ -25,18 +25,19 @@ if [[ "${BASH_SOURCE[0]}" = "${0}" ]]; then esac done fi - create_random_file(){ run dd if=/dev/urandom of=$1 bs=$2 count=1 &> /dev/null } REPO_NAME=performance_testing REPO_PATH=./remote +WITH_SUBMODULE="true" if [ ! -d $REPO_PATH ]; then mkdir $REPO_PATH fi cd $REPO_PATH +echo $(ls -la) if [ ! -d $REPO_NAME ]; then mkdir $REPO_NAME cd $REPO_NAME @@ -64,6 +65,22 @@ if [ ! -d $REPO_NAME ]; then rm sample4 git add sample4 git commit -m"sample4 deleted" + if [ "$WITH_SUBMODULE" = "true" ]; then + SUB_NAME="submodule_for_performance_testing" + if [ ! -d $SUB_NAME ]; then + mkdir $SUB_NAME + cd $SUB_NAME + git init + git branch -m main + create_random_file 'sub_sample0' '1M' + git add . + git commit -m"first 1M sample created" + cd ../$REPO_NAME + fi + git submodule add ../submodule_for_performance_testing + git commit -am "adding $SUB_NAME module" + fi cd .. fi -cd .. +cd ../.. +pwd \ No newline at end of file diff --git a/notes.odt b/notes.odt index c21ba56f8c3ae387f043912db7a487cef02f0e1c..622f5de34d1c5543ca9991998396247fe2fddc18 100644 GIT binary patch delta 25694 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 delta 23365 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 /dev/null FILES_TO_KEEP='sample0' @@ -52,7 +50,7 @@ get_bandwidth(){ test0(){ section TEST0 echo "TEST 0 : case of classic cloning." - git clone --progress --no-local $1 2> cloning_text + git clone --recurse-submodules --progress --no-local $1 2> cloning_text get_storage_used "./$REPO_NAME" get_bandwidth cloning_text echo "memory usage in a classic cloning : $mem" @@ -64,7 +62,7 @@ test0(){ test1(){ section TEST1 echo "TEST 1 : case of --single-branch cloning." - git clone --progress --single-branch --no-local $1 2> cloning_text + git clone --recurse-submodules --progress --single-branch --no-local $1 2> cloning_text get_storage_used ./$REPO_NAME get_bandwidth cloning_text echo "memory usage in a --single-branch cloning : $mem" @@ -76,7 +74,7 @@ test1(){ test2(){ section TEST2 echo "TEST 2 : case of --depth=1 --no-single-branch" - git clone --progress --depth=1 --no-local --no-single-branch $1 2> cloning_text + git clone --recurse-submodules --progress --depth=1 --no-local --no-single-branch $1 2> cloning_text get_storage_used ./$REPO_NAME get_bandwidth cloning_text echo "memory usage in a --depth=1 --no-single-branch cloning : $mem" @@ -88,13 +86,13 @@ test2(){ test3(){ section TEST3 echo "TEST 3 : case of --depth=1 with single-branch (default))" - git clone --progress --single-branch --no-local --depth=1 $1 2> cloning_text + git clone --recurse-submodules --recurse-submodules --progress --single-branch --no-local --depth=1 $1 2> cloning_text get_storage_used ./$REPO_NAME get_bandwidth cloning_text echo "memory usage in a --depth=1 with single-branch cloning : $mem" echo "bandwidth usage : $bw" run rm cloning_text - run rm -rf $REPO_NAME + #run rm -rf $REPO_NAME } test4(){ @@ -113,19 +111,18 @@ test4(){ echo "memory usage: $mem" echo "bandwidth usage : unknown" cd .. - run rm -rf $REPO_NAME + #run rm -rf $REPO_NAME } - - #TESTS ON THE UPDATING OF THE REPOSITORY test5(){ section TEST5 run echo 'TEST 5 : case of classic fetching and merging, after addition of a 1M file' #initialization - run git clone $1 &> /dev/null + run git clone --recurse-submodules $1 &> /dev/null cd $REPO_NAME + #run git submodule update --init --recursive --force --recommend-shallow run git fetch --progress origin &> /dev/null run git merge --progress origin &> /dev/null get_storage_used . @@ -137,16 +134,13 @@ test5(){ run git commit --quiet -m"fourth 1M sample created" cd ../../$REPO_NAME #fetching - run git fetch --progress origin &> /dev/null - run git checkout origin/main - run git reset --hard - #run git merge --progress &> fetching_text + run git fetch --progress --tags --depth=1 --recurse-submodules origin &> /dev/null + git checkout -f --recurse-submodules origin/main &> /dev/null get_storage_used . mem_after=$mem mem=$(($mem_after-$mem_before)) #get_bandwidth fetching_text echo "memory usage: +$mem" - #echo "bandwidth usage: $bw" cd ../$REMOTE git reset --hard -q HEAD~1 cd ../.. @@ -157,7 +151,7 @@ test6(){ section TEST6 run echo 'TEST 6 : case of classic fetching and merging, after removal of a 1M file' #initialization - run git clone $1 #&> /dev/null + run git clone --recurse-submodules $1 #&> /dev/null cd $REPO_NAME get_storage_used . mem_before=$mem @@ -168,18 +162,15 @@ test6(){ run git commit --quiet -m"1M sample0 deleted" cd ../../$REPO_NAME #fetching - run git fetch --progress origin &> /dev/null - run git checkout origin/main - run git reset --hard - #run git merge --progress &> fetching_text + run git fetch --progress --tags --depth=1 --recurse-submodules origin &> /dev/null + git checkout -f --recurse-submodules origin/main &> /dev/null get_storage_used . mem_after=$mem mem=$(($mem_after-$mem_before)) - #get_bandwidth fetching_text echo "memory usage: $mem" - #echo "bandwidth usage: $bw" cd ../$REMOTE git reset --hard -q HEAD~1 + git clean -df cd ../.. #rm -rf performance_testing } @@ -188,7 +179,7 @@ test7(){ section TEST7 run echo 'TEST 7 : case of classic fetching and merging, after addition then removal of a 1M file' #initialization - run git clone $1 &> /dev/null + run git clone --recurse-submodules $1 &> /dev/null cd $REPO_NAME get_storage_used . mem_before=$mem @@ -202,15 +193,12 @@ test7(){ run git commit --quiet -m"1M "sample5" deleted" cd ../../$REPO_NAME #fetching - run git fetch --progress origin &> /dev/null - run git checkout origin/main - run git reset --hard - #run git merge --progress &> fetching_text + run git fetch --progress --tags --depth=1 --recurse-submodules origin &> /dev/null + git checkout -f --recurse-submodules origin/main &> /dev/null get_storage_used . mem_after=$mem mem=$(($mem_after-$mem_before)) echo "memory usage: $mem" - #echo "bandwidth usage : unknown" cd ../$REMOTE git reset --hard -q HEAD~2 cd ../.. @@ -222,8 +210,9 @@ test8(){ run echo 'TEST 8 : case of fetching --depth=1 and merging, after addition of a 1M file' #initialization echo $(pwd) - run git clone $1 &> /dev/null + run git clone --recurse-submodules $1 &> /dev/null cd $REPO_NAME + echo "un truc écrit en plus" >> untexte get_storage_used . mem_before=$mem #modification of the remote repo @@ -232,18 +221,14 @@ test8(){ run git add sample5 run git commit --quiet -m"fourth 1M sample created" cd ../../$REPO_NAME - run git fetch --progress --depth=1 origin &> /dev/null - run git checkout origin/main - run git reset --hard - #run git merge --progress --allow-unrelated-histories &> fetching_text + run git fetch --progress --tags --depth=1 --recurse-submodules origin &> /dev/null + git checkout -f --recurse-submodules origin/main &> /dev/null get_storage_used . mem_after=$mem mem=$(($mem_after-$mem_before)) - #get_bandwidth fetching_text echo "memory usage: +$mem" - #echo "bandwidth usage: $bw" cd ../$REMOTE - git reset --hard -q HEAD~1 #does not work cause commits change numbers + git reset --hard -q HEAD~1 cd ../.. #rm -rf performance_testing } @@ -252,7 +237,7 @@ test9(){ section TEST9 run echo 'TEST 9 : case of --depth=1 fetching and merging, after removal of a 1M file' #initialization - run git clone $1 &> /dev/null + run git clone --recurse-submodules $1 &> /dev/null cd $REPO_NAME get_storage_used . mem_before=$mem @@ -263,15 +248,12 @@ test9(){ run git commit --quiet -m"1M sample0 deleted" cd ../../$REPO_NAME #fetching - run git fetch --progress --depth=1 --prune origin &> text1 - run git checkout origin/main - run git reset --hard - #run git merge --progress --allow-unrelated-histories &> text2 + run git fetch --progress --tags --depth=1 --recurse-submodules origin &> /dev/null + git checkout -f --recurse-submodules origin/main &> /dev/null get_storage_used . mem_after=$mem mem=$(($mem_after-$mem_before)) echo "memory usage: $mem" - #echo "bandwidth usage: unknown" cd ../$REMOTE git reset --hard -q HEAD~1 cd ../.. @@ -281,12 +263,11 @@ test9(){ test10(){ section TEST10 run echo 'TEST 10 : case of --depth=1 fetching and merging, after addition then removal of a 1M file' - run git clone $1 &> /dev/null + run git clone --recurse-submodules $1 &> /dev/null cd $REPO_NAME - run git fetch --progress origin &> /dev/null - run git merge --progress origin &> /dev/null get_storage_used . mem_before=$mem + pwd #modification of the remote repo cd ../$REMOTE create_random_file 'sample5' '1M' #adding a 1M file @@ -297,15 +278,105 @@ test10(){ run git commit --quiet -m"1M "sample5" deleted" cd ../../$REPO_NAME #fetching - run git fetch --progress --depth=1 origin &> /dev/null - git checkout origin/main - git reset --hard - #run git merge --progress --allow-unrelated-histories &> /dev/null + run git fetch --progress --tags --depth=1 --recurse-submodules origin &> /dev/null + git checkout -f --recurse-submodules origin/main &> /dev/null + get_storage_used . + mem_after=$mem + mem=$(($mem_after-$mem_before)) + echo "memory usage: $mem" + cd ../$REMOTE + git reset --hard -q HEAD~2 + cd ../.. + #rm -rf performance_testing +} + +test11(){ + section TEST11 + run echo 'TEST 11 : case of --depth=1 fetching and merging, after addition of a 1M file in submodule' + pwd + run git clone --recurse-submodules $1 + cd $REPO_NAME + get_storage_used . + mem_before=$mem + pwd + ls -la + #modification of the remote submodule + cd ../$REMOTE/$SUB_NAME + pwd + create_random_file 'sub_sample1' '1M' + git add sub_sample1 + git commit --quiet -m"first 1M sample created" + cd ../../$REPO_NAME + #fetching + run git submodule update --init --recursive --force --recommend-shallow + run git fetch --progress --tags --depth=1 -recursive-submodules origin &> /dev/null + git checkout -f -recursive-submodules origin/main &> /dev/null + get_storage_used . + mem_after=$mem + mem=$(($mem_after-$mem_before)) + echo "memory usage: $mem" + cd ../$REMOTE + git reset --hard -q HEAD~2 + cd ../.. + #rm -rf performance_testing +} + +test12(){ + section TEST12 + run echo 'TEST 12 : case of --depth=1 fetching and merging, after removal of a 1M file in submodule' + run git clone --recurse-submodules $1 &> /dev/null + cd $REPO_NAME + get_storage_used . + mem_before=$mem + pwd + #modification of the remote repo + cd ../$REMOTE/$SUB_NAME + ls -la + rm sub_sample1 + git add sub_sample1 + git commit -m"1M sub_sample1 deleted" + cd ../../$REPO_NAME + #fetching + run git submodule update --init --recursive --force --recommend-shallow + run git fetch --progress --tags --depth=1 --recurse-submodules origin &> /dev/null + git checkout -f --recurse-submodules origin/main &> /dev/null + get_storage_used . + mem_after=$mem + mem=$(($mem_after-$mem_before)) + echo "memory usage: $mem" + cd ../$REMOTE + git reset --hard -q HEAD~2 + cd ../.. + #rm -rf performance_testing +} + + +test13(){ + section TEST13 + run echo 'TEST 13 : case of --depth=1 fetching and merging, after addition then removal of a 1M file in submodule' + run git clone --recurse-submodules $1 &> /dev/null + cd $REPO_NAME + run git fetch --progress origin &> /dev/null + run git merge --progress origin &> /dev/null + get_storage_used . + mem_before=$mem + #modification of the remote repo + cd ../$REMOTE/$SUB_NAME + create_random_file 'sub_sample1' '5M' + git add sub_sample1 + git commit -m"first 1M sample created" + rm sub_sample1 + git add sub_sample1 + git commit -m"1M sub_sample1 deleted" + cd ../../$REPO_NAME + #fetching + run git submodule update --init --recursive --force --recommend-shallow + run git fetch --progress --tags --depth=1 --recurse-submodules origin &> /dev/null + git checkout -f --recurse-submodules origin/main &> /dev/null get_storage_used . mem_after=$mem mem=$(($mem_after-$mem_before)) echo "memory usage: $mem" - #echo "bandwidth usage : unknown" cd ../$REMOTE git reset --hard -q HEAD~2 cd ../.. @@ -339,6 +410,10 @@ if [ "$ALL_TESTS" = true ]; then test8 $REMOTE test9 $REMOTE test10 $REMOTE + test11 $REMOTE + test12 $REMOTE + test13 $REMOTE + elif [ -n "$TEST_NUM" ]; then case $TEST_NUM in @@ -364,6 +439,12 @@ elif [ -n "$TEST_NUM" ]; then test9 $REMOTE;; 10) test10 $REMOTE;; + 11) + test11 $REMOTE;; + 12) + test12 $REMOTE;; + 13) + test13 $REMOTE;; *) echo "Error: Invalid test number" die;;