texte explicatif fini
This commit is contained in:
parent
49f8746caf
commit
7a65f4bed3
@ -52,7 +52,9 @@ if [ ! -d $REPO_NAME ]; then
|
|||||||
git commit -m"first 1M sample created"
|
git commit -m"first 1M sample created"
|
||||||
git tag start
|
git tag start
|
||||||
create_random_file 'sample1' '1M'
|
create_random_file 'sample1' '1M'
|
||||||
git add sample1
|
touch texte
|
||||||
|
echo "un soleil bleu">texte
|
||||||
|
git add sample1 texte
|
||||||
git commit -m"second 1M sample created"
|
git commit -m"second 1M sample created"
|
||||||
git branch secondary
|
git branch secondary
|
||||||
git checkout secondary
|
git checkout secondary
|
||||||
|
@ -31,17 +31,40 @@ DESCRIPTION
|
|||||||
TEST1: --single-branch cloning
|
TEST1: --single-branch cloning
|
||||||
TEST2: --depth=1 --no-single-branch cloning
|
TEST2: --depth=1 --no-single-branch cloning
|
||||||
TEST3: --depth=1 cloning
|
TEST3: --depth=1 cloning
|
||||||
TEST4: sparse-checking 1M sample0 only cloning
|
TEST4: --depth=1 with reflog and gc cloning
|
||||||
|
TEST5: sparse-checking 1M sample0 cloning
|
||||||
_________________
|
_________________
|
||||||
TEST5: classic fetching and merging after addition of a 1M file
|
TEST6: classic fetching+checking out after addition of a 1M file
|
||||||
TEST6: classic fetching and merging, after removal of a 1M file
|
TEST7: classic fetching+checking out after removal of a 1M file
|
||||||
TEST7: classic fetching and merging, after addition then removal of a 1M file
|
TEST8: classic fetching+checking out after addition then removal of a 1M file
|
||||||
TEST8: --depth=1 fetching and merging, after addition of a 1M file
|
|
||||||
TEST9: --depth=1 fetching and merging, after removal of a 1M file
|
TEST9: --depth=1 fetching+checking out after addition of a 1M file
|
||||||
TEST10: --depth=1 fetching and merging, after addition then removal of 1M a file
|
TEST10: --depth=1 fetching+checking out after removal of a 1M file
|
||||||
TEST17: --depth=1 fetching and merging, after addition of a 1M file in submodule
|
TEST11: --depth=1 fetching+checking out after addition then removal of 1M a file
|
||||||
TEST18: --depth=1 fetching and merging, after removal of a 1M file in submodule
|
|
||||||
TEST19: --depth=1 fetching and merging, after addition then removal of a 1M file in submodule"
|
TEST12: --depth=1 fetching+checking out with reflog annd gc after addition of a 1M file
|
||||||
|
TEST13: --depth=1 fetching+checking out with reflog annd gc after removal of a 1M file
|
||||||
|
TEST14: --depth=1 fetching+checking out with reflog annd gc after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST15: --depth=1 fetching+ --reset=hard after addition of a 1M file
|
||||||
|
TEST16: --depth=1 fetching+ --reset=hard after removal of a 1M file
|
||||||
|
TEST17: --depth=1 fetching+ --reset=hard after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST18: --depth=1 fetching+ --reset=hard and reflog and gc after addition of a 1M file
|
||||||
|
TEST19: --depth=1 fetching+ --reset=hard and reflog and gc after removal of a 1M file
|
||||||
|
TEST20: --depth=1 fetching+ --reset=hard and reflog and gc after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST21: --depth=1 fetching+checking out after addition of a 1M file in submodule
|
||||||
|
TEST22: --depth=1 fetching+checking out after removal of a 1M file in submodule
|
||||||
|
TEST23: --depth=1 fetching+checking out after addition then removal of a 1M file in submodule
|
||||||
|
|
||||||
|
TEST24: --depth=1 fetching+merging -X theirs with reflog and gc after addition of a 1M file
|
||||||
|
TEST25: --depth=1 fetching+merging -X theirs with reflog and gc after removal of a 1M file
|
||||||
|
TEST26: --depth=1 fetching+merging -X theirs with reflog and gc after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST27: --depth=1 fetching+merging -s ours with reflog and gc after addition of a 1M file
|
||||||
|
TEST28: --depth=1 fetching+merging -s ours with reflog and gc after removal of a 1M file
|
||||||
|
TEST29: --depth=1 fetching+merging -s ours with reflog and gc after addition then removal of a 1M file"
|
||||||
}
|
}
|
||||||
|
|
||||||
#USEFUL FUNCTIONS FOR THE TESTS
|
#USEFUL FUNCTIONS FOR THE TESTS
|
||||||
@ -109,7 +132,7 @@ test2(){
|
|||||||
test3(){
|
test3(){
|
||||||
section TEST3
|
section TEST3
|
||||||
echo "TEST 3: --depth=1 with single-branch (default))"
|
echo "TEST 3: --depth=1 with single-branch (default))"
|
||||||
git clone --recurse-submodules --recurse-submodules --progress --single-branch --no-local --depth=1 $1 &> cloning_text
|
git clone --recurse-submodules --progress --single-branch --no-local --depth=1 $1 &> cloning_text
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
run git submodule update --init --recursive --force --remote --progress --depth=1 &> /dev/null
|
run git submodule update --init --recursive --force --remote --progress --depth=1 &> /dev/null
|
||||||
cd ..
|
cd ..
|
||||||
@ -124,7 +147,7 @@ test3(){
|
|||||||
test4(){
|
test4(){
|
||||||
section TEST4
|
section TEST4
|
||||||
echo "TEST 4: --depth=1 with single-branch (default) and reflog and gc"
|
echo "TEST 4: --depth=1 with single-branch (default) and reflog and gc"
|
||||||
git clone --recurse-submodules --recurse-submodules --progress --single-branch --no-local --depth=1 $1 &> cloning_text
|
git clone --recurse-submodules --progress --single-branch --no-local --depth=1 $1 &> cloning_text
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
run git submodule update --init --recursive --force --remote --progress --depth=1 &> /dev/null
|
run git submodule update --init --recursive --force --remote --progress --depth=1 &> /dev/null
|
||||||
git reset --hard
|
git reset --hard
|
||||||
@ -149,7 +172,7 @@ test5(){
|
|||||||
#pulling from the remote with sparse-checking enabled
|
#pulling from the remote with sparse-checking enabled
|
||||||
run git remote add -f origin ../$1 &> /dev/null
|
run git remote add -f origin ../$1 &> /dev/null
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
echo "memory usage: $mem"
|
echo "memory usage: $mem"
|
||||||
@ -164,7 +187,7 @@ test6(){
|
|||||||
section TEST6
|
section TEST6
|
||||||
run echo 'TEST 6: after addition of a 1M file'
|
run echo 'TEST 6: after addition of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
#run git submodule update --init --recursive --force --depth=1
|
#run git submodule update --init --recursive --force --depth=1
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
@ -177,7 +200,7 @@ test6(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --remote &> /dev/null
|
run git submodule update --init --recursive --force --remote &> /dev/null
|
||||||
run git fetch --progress --tags origin &> /dev/null
|
run git fetch --progress --tags --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -192,7 +215,7 @@ test7(){
|
|||||||
section TEST7
|
section TEST7
|
||||||
run echo 'TEST 7: after removal of a 1M file'
|
run echo 'TEST 7: after removal of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -204,7 +227,7 @@ test7(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --remote &> /dev/null
|
run git submodule update --init --recursive --force --remote &> /dev/null
|
||||||
run git fetch --progress --tags origin &> /dev/null
|
run git fetch --progress --tags --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -220,7 +243,7 @@ test8(){
|
|||||||
section TEST8
|
section TEST8
|
||||||
run echo 'TEST 8: after addition then removal of a 1M file'
|
run echo 'TEST 8: after addition then removal of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -235,7 +258,7 @@ test8(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --remote &> /dev/null
|
run git submodule update --init --recursive --force --remote &> /dev/null
|
||||||
run git fetch --progress --tags origin &> /dev/null
|
run git fetch --progress --tags --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -252,9 +275,8 @@ test9(){
|
|||||||
section TEST9
|
section TEST9
|
||||||
run echo 'TEST 9: after addition of a 1M file'
|
run echo 'TEST 9: after addition of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
echo "un truc écrit en plus" >> untexte
|
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
#modification of the remote repo
|
#modification of the remote repo
|
||||||
@ -264,7 +286,7 @@ test9(){
|
|||||||
run git commit --quiet -m"fourth 1M sample created"
|
run git commit --quiet -m"fourth 1M sample created"
|
||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -279,7 +301,7 @@ test10(){
|
|||||||
section TEST10
|
section TEST10
|
||||||
run echo 'TEST 10: after removal of a 1M file'
|
run echo 'TEST 10: after removal of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -291,7 +313,7 @@ test10(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
git fetch --progress --tags --prune --depth=1 origin &> /dev/null
|
git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -305,7 +327,7 @@ test10(){
|
|||||||
test11(){
|
test11(){
|
||||||
section TEST11
|
section TEST11
|
||||||
run echo 'TEST 11: after addition then removal of a 1M file'
|
run echo 'TEST 11: after addition then removal of a 1M file'
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -320,7 +342,7 @@ test11(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -337,9 +359,8 @@ test12(){
|
|||||||
section TEST12
|
section TEST12
|
||||||
run echo 'TEST 12: after addition of a 1M file'
|
run echo 'TEST 12: after addition of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
echo "un truc écrit en plus" >> untexte
|
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
#modification of the remote repo
|
#modification of the remote repo
|
||||||
@ -349,7 +370,7 @@ test12(){
|
|||||||
run git commit --quiet -m"fourth 1M sample created"
|
run git commit --quiet -m"fourth 1M sample created"
|
||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
git reflog expire --expire=now --all &> /dev/null
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
git gc --aggressive --prune=now &> /dev/null
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
@ -366,7 +387,7 @@ test13(){
|
|||||||
section TEST13
|
section TEST13
|
||||||
run echo 'TEST 13: after removal of a 1M file'
|
run echo 'TEST 13: after removal of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -378,7 +399,7 @@ test13(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
git fetch --progress --tags --prune --depth=1 origin &> /dev/null
|
git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
git reflog expire --expire=now --all &> /dev/null
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
git gc --aggressive --prune=now &> /dev/null
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
@ -394,7 +415,7 @@ test13(){
|
|||||||
test14(){
|
test14(){
|
||||||
section TEST14
|
section TEST14
|
||||||
run echo 'TEST 14: after addition then removal of a 1M file'
|
run echo 'TEST 14: after addition then removal of a 1M file'
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -409,7 +430,7 @@ test14(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
git reflog expire --expire=now --all &> /dev/null
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
git gc --aggressive --prune=now &> /dev/null
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
@ -428,9 +449,8 @@ test15(){
|
|||||||
section TEST15
|
section TEST15
|
||||||
run echo 'TEST 15: after addition of a 1M file'
|
run echo 'TEST 15: after addition of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
echo "un truc écrit en plus" >> untexte
|
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
#modification of the remote repo
|
#modification of the remote repo
|
||||||
@ -440,7 +460,7 @@ test15(){
|
|||||||
run git commit --quiet -m"fourth 1M sample created"
|
run git commit --quiet -m"fourth 1M sample created"
|
||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git reset --hard origin/main &> /dev/null
|
git reset --hard origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -455,7 +475,7 @@ test16(){
|
|||||||
section TEST16
|
section TEST16
|
||||||
run echo 'TEST 16: after removal of a 1M file'
|
run echo 'TEST 16: after removal of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -467,7 +487,7 @@ test16(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
git fetch --progress --tags --prune --depth=1 origin &> /dev/null
|
git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git reset --hard origin/main &> /dev/null
|
git reset --hard origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -481,7 +501,7 @@ test16(){
|
|||||||
test17(){
|
test17(){
|
||||||
section TEST17
|
section TEST17
|
||||||
run echo 'TEST 17: after addition then removal of a 1M file'
|
run echo 'TEST 17: after addition then removal of a 1M file'
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -496,7 +516,7 @@ test17(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git reset --hard origin/main &> /dev/null
|
git reset --hard origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -511,7 +531,7 @@ test17(){
|
|||||||
test18(){
|
test18(){
|
||||||
section TEST18
|
section TEST18
|
||||||
run echo 'TEST 18: after addition of a 1M file'
|
run echo 'TEST 18: after addition of a 1M file'
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -523,7 +543,7 @@ test18(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git reset --hard origin/main &> /dev/null
|
git reset --hard origin/main &> /dev/null
|
||||||
git reflog expire --expire=now --all &> /dev/null
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
git gc --aggressive --prune=now &> /dev/null
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
@ -540,7 +560,7 @@ test19(){
|
|||||||
section TEST19
|
section TEST19
|
||||||
run echo 'TEST 19: after removal of a 1M file'
|
run echo 'TEST 19: after removal of a 1M file'
|
||||||
#initialization
|
#initialization
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -552,7 +572,7 @@ test19(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
git fetch --progress --tags --prune --depth=1 origin &> /dev/null
|
git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git reset --hard origin/main &> /dev/null
|
git reset --hard origin/main &> /dev/null
|
||||||
git reflog expire --expire=now --all &> /dev/null
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
git gc --aggressive --prune=now &> /dev/null
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
@ -568,7 +588,7 @@ test19(){
|
|||||||
test20(){
|
test20(){
|
||||||
section TEST20
|
section TEST20
|
||||||
run echo 'TEST 20: after addition then removal of a 1M file'
|
run echo 'TEST 20: after addition then removal of a 1M file'
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -583,7 +603,7 @@ test20(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git reset --hard origin/main &> /dev/null
|
git reset --hard origin/main &> /dev/null
|
||||||
git reflog expire --expire=now --all &> /dev/null
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
git gc --aggressive --prune=now &> /dev/null
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
@ -601,7 +621,7 @@ test21(){
|
|||||||
section TEST21
|
section TEST21
|
||||||
run echo 'TEST 21: after addition of a 1M file'
|
run echo 'TEST 21: after addition of a 1M file'
|
||||||
if [ "$WITH_SUBMODULE" = "true" ]; then
|
if [ "$WITH_SUBMODULE" = "true" ]; then
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -614,7 +634,7 @@ test21(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -633,7 +653,7 @@ test22(){
|
|||||||
section TEST22
|
section TEST22
|
||||||
run echo 'TEST 22: after removal of a 1M file'
|
run echo 'TEST 22: after removal of a 1M file'
|
||||||
if [ "$WITH_SUBMODULE" = "true" ]; then
|
if [ "$WITH_SUBMODULE" = "true" ]; then
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -646,7 +666,7 @@ test22(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -665,7 +685,7 @@ test23(){
|
|||||||
section TEST23
|
section TEST23
|
||||||
run echo 'TEST 23: after addition then removal of a 1M file'
|
run echo 'TEST 23: after addition then removal of a 1M file'
|
||||||
if [ "$WITH_SUBMODULE" = "true" ]; then
|
if [ "$WITH_SUBMODULE" = "true" ]; then
|
||||||
git clone --recurse-submodules --progress --no-local $1 &> /dev/null
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
cd $REPO_NAME
|
cd $REPO_NAME
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_before=$mem
|
mem_before=$mem
|
||||||
@ -681,7 +701,7 @@ test23(){
|
|||||||
cd ../../$REPO_NAME
|
cd ../../$REPO_NAME
|
||||||
#fetching
|
#fetching
|
||||||
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
run git fetch --progress --tags --depth=1 origin &> /dev/null
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
git checkout -f origin/main &> /dev/null
|
git checkout -f origin/main &> /dev/null
|
||||||
get_storage_used .
|
get_storage_used .
|
||||||
mem_after=$mem
|
mem_after=$mem
|
||||||
@ -696,6 +716,199 @@ test23(){
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# --depth=1 fetching+merging -X theirs with reflog and gc
|
||||||
|
test24(){
|
||||||
|
section TEST24
|
||||||
|
run echo 'TEST 24: after addition of a 1M file'
|
||||||
|
#initialization
|
||||||
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
|
cd $REPO_NAME
|
||||||
|
get_storage_used .
|
||||||
|
mem_before=$mem
|
||||||
|
#modification of the remote repo
|
||||||
|
cd ../$REMOTE
|
||||||
|
create_random_file 'sample5' '1M' #adding a 1M file
|
||||||
|
run git add sample5
|
||||||
|
run git commit --quiet -m"fourth 1M sample created"
|
||||||
|
cd ../../$REPO_NAME
|
||||||
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
|
git merge -X theirs --allow-unrelated-histories &> /dev/null
|
||||||
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
|
get_storage_used .
|
||||||
|
mem_after=$mem
|
||||||
|
mem=$(($mem_after-$mem_before))
|
||||||
|
echo "memory usage: +$mem"
|
||||||
|
cd ../$REMOTE
|
||||||
|
git reset --hard -q HEAD~1
|
||||||
|
cd ../..
|
||||||
|
rm -rf performance_testing
|
||||||
|
}
|
||||||
|
test25(){
|
||||||
|
section TEST25
|
||||||
|
run echo 'TEST 25: after removal of a 1M file'
|
||||||
|
#initialization
|
||||||
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
|
cd $REPO_NAME
|
||||||
|
get_storage_used .
|
||||||
|
mem_before=$mem
|
||||||
|
#modification of the remote repo
|
||||||
|
cd ../$REMOTE
|
||||||
|
run rm sample0
|
||||||
|
run git add sample0
|
||||||
|
run git commit --quiet -m"1M sample0 deleted"
|
||||||
|
cd ../../$REPO_NAME
|
||||||
|
#fetching
|
||||||
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
|
git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
|
git merge -X theirs --allow-unrelated-histories &> /dev/null
|
||||||
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
|
get_storage_used .
|
||||||
|
mem_after=$mem
|
||||||
|
mem=$(($mem_after-$mem_before))
|
||||||
|
echo "memory usage: $mem"
|
||||||
|
cd ../$REMOTE
|
||||||
|
git reset --hard -q HEAD~1
|
||||||
|
cd ../..
|
||||||
|
rm -rf performance_testing
|
||||||
|
}
|
||||||
|
test26(){
|
||||||
|
section TEST26
|
||||||
|
run echo 'TEST 26: after addition then removal of a 1M file'
|
||||||
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
|
cd $REPO_NAME
|
||||||
|
get_storage_used .
|
||||||
|
mem_before=$mem
|
||||||
|
#modification of the remote repo
|
||||||
|
cd ../$REMOTE
|
||||||
|
create_random_file 'sample5' '1M' #adding a 1M file
|
||||||
|
run git add sample5
|
||||||
|
run git commit --quiet -m"fourth 1M sample created"
|
||||||
|
run rm sample5
|
||||||
|
run git add sample5
|
||||||
|
run git commit --quiet -m"1M "sample5" deleted"
|
||||||
|
cd ../../$REPO_NAME
|
||||||
|
#fetching
|
||||||
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
|
git merge -X theirs --allow-unrelated-histories &> /dev/null
|
||||||
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
|
git gc --aggressive --prune=now &> /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
|
||||||
|
}
|
||||||
|
|
||||||
|
# --depth=1 fetching+merging -s ours with reflog and gc
|
||||||
|
test27(){
|
||||||
|
section TEST27
|
||||||
|
run echo 'TEST 27: after addition of a 1M file'
|
||||||
|
#initialization
|
||||||
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
|
cd $REPO_NAME
|
||||||
|
get_storage_used .
|
||||||
|
mem_before=$mem
|
||||||
|
#modification of the remote repo
|
||||||
|
cd ../$REMOTE
|
||||||
|
create_random_file 'sample5' '1M' #adding a 1M file
|
||||||
|
run git add sample5
|
||||||
|
run git commit --quiet -m"fourth 1M sample created"
|
||||||
|
cd ../../$REPO_NAME
|
||||||
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
|
git switch -c temp origin/main &> /dev/null #creating a temporary branch identical to origin/main
|
||||||
|
git merge -s ours --allow-unrelated-histories main &> /dev/null
|
||||||
|
git checkout main &> /dev/null
|
||||||
|
git merge --allow-unrelated-histories temp &> /dev/null
|
||||||
|
git branch -D temp &> /dev/null
|
||||||
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
|
get_storage_used .
|
||||||
|
mem_after=$mem
|
||||||
|
mem=$(($mem_after-$mem_before))
|
||||||
|
echo "memory usage: +$mem"
|
||||||
|
cd ../$REMOTE
|
||||||
|
git reset --hard -q HEAD~1
|
||||||
|
cd ../..
|
||||||
|
rm -rf performance_testing
|
||||||
|
}
|
||||||
|
test28(){
|
||||||
|
section TEST28
|
||||||
|
run echo 'TEST 28: after removal of a 1M file'
|
||||||
|
#initialization
|
||||||
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
|
cd $REPO_NAME
|
||||||
|
get_storage_used .
|
||||||
|
mem_before=$mem
|
||||||
|
#modification of the remote repo
|
||||||
|
cd ../$REMOTE
|
||||||
|
run rm sample0
|
||||||
|
run git add sample0
|
||||||
|
run git commit --quiet -m"1M sample0 deleted"
|
||||||
|
cd ../../$REPO_NAME
|
||||||
|
#fetching
|
||||||
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
|
git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
|
git switch -c temp origin/main &> /dev/null #creating a temporary branch identical to origin/main
|
||||||
|
git merge -s ours --allow-unrelated-histories main &> /dev/null
|
||||||
|
git checkout main &> /dev/null
|
||||||
|
git merge --allow-unrelated-histories temp &> /dev/null
|
||||||
|
git branch -D temp &> /dev/null
|
||||||
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
|
git gc --aggressive --prune=now &> /dev/null
|
||||||
|
get_storage_used .
|
||||||
|
mem_after=$mem
|
||||||
|
mem=$(($mem_after-$mem_before))
|
||||||
|
echo "memory usage: $mem"
|
||||||
|
cd ../$REMOTE
|
||||||
|
git reset --hard -q HEAD~1
|
||||||
|
cd ../..
|
||||||
|
rm -rf performance_testing
|
||||||
|
}
|
||||||
|
test29(){
|
||||||
|
section TEST29
|
||||||
|
run echo 'TEST 29: after addition then removal of a 1M file'
|
||||||
|
git clone --recurse-submodules --progress --depth=1 --no-local $1 &> /dev/null
|
||||||
|
cd $REPO_NAME
|
||||||
|
get_storage_used .
|
||||||
|
mem_before=$mem
|
||||||
|
#modification of the remote repo
|
||||||
|
cd ../$REMOTE
|
||||||
|
create_random_file 'sample5' '1M' #adding a 1M file
|
||||||
|
run git add sample5
|
||||||
|
run git commit --quiet -m"fourth 1M sample created"
|
||||||
|
run rm sample5
|
||||||
|
run git add sample5
|
||||||
|
run git commit --quiet -m"1M "sample5" deleted"
|
||||||
|
cd ../../$REPO_NAME
|
||||||
|
#fetching
|
||||||
|
run git submodule update --init --recursive --force --depth=1 --remote &> /dev/null
|
||||||
|
run git fetch --progress --tags --depth=1 --prune --prune-tags origin &> /dev/null
|
||||||
|
git switch -c temp origin/main &> /dev/null #creating a temporary branch identical to origin/main
|
||||||
|
git merge -s ours --allow-unrelated-histories main &> /dev/null
|
||||||
|
git checkout main &> /dev/null
|
||||||
|
#git merge --allow-unrelated-histories temp &> /dev/null
|
||||||
|
git branch -D temp &> /dev/null
|
||||||
|
git reflog expire --expire=now --all &> /dev/null
|
||||||
|
git gc --aggressive --prune=now &> /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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
while getopts ":hn:a" option; do
|
while getopts ":hn:a" option; do
|
||||||
case $option in
|
case $option in
|
||||||
h) # display Help
|
h) # display Help
|
||||||
@ -719,30 +932,39 @@ if [ "$ALL_TESTS" = "true" ]; then
|
|||||||
test4 $REMOTE
|
test4 $REMOTE
|
||||||
test5 $REMOTE
|
test5 $REMOTE
|
||||||
echo $(section "Tests on the updating of the repository")
|
echo $(section "Tests on the updating of the repository")
|
||||||
section "classic fetching"
|
section "classic fetching+checking out"
|
||||||
test6 $REMOTE
|
test6 $REMOTE
|
||||||
test7 $REMOTE
|
test7 $REMOTE
|
||||||
test8 $REMOTE
|
test8 $REMOTE
|
||||||
echo $(section "fetching with --depth=1")
|
echo $(section "fetching+checking out with --depth=1")
|
||||||
test9 $REMOTE
|
test9 $REMOTE
|
||||||
test10 $REMOTE
|
test10 $REMOTE
|
||||||
test11 $REMOTE
|
test11 $REMOTE
|
||||||
echo $(section "--depth=1 fetching with reflog and gc")
|
echo $(section "--depth=1 fetching+checking out reflog and gc")
|
||||||
test12 $REMOTE
|
test12 $REMOTE
|
||||||
test13 $REMOTE
|
test13 $REMOTE
|
||||||
test14 $REMOTE
|
test14 $REMOTE
|
||||||
echo $(section "--depth=1 fetching with reset --hard")
|
echo $(section "--depth=1 fetching+ reset --hard")
|
||||||
test15 $REMOTE
|
test15 $REMOTE
|
||||||
test16 $REMOTE
|
test16 $REMOTE
|
||||||
test17 $REMOTE
|
test17 $REMOTE
|
||||||
echo $(section "--depth=1 fetching with reset --hard and reflog and gc")
|
echo $(section "--depth=1 fetching+ reset --hard and reflog and gc")
|
||||||
test18 $REMOTE
|
test18 $REMOTE
|
||||||
test19 $REMOTE
|
test19 $REMOTE
|
||||||
test20 $REMOTE
|
test20 $REMOTE
|
||||||
echo $(section "--depth=1 fetching after modification applied in submodule")
|
echo $(section "--depth=1 fetching+checking out after modification applied in submodule")
|
||||||
test21 $REMOTE
|
test21 $REMOTE
|
||||||
test22 $REMOTE
|
test22 $REMOTE
|
||||||
test23 $REMOTE
|
test23 $REMOTE
|
||||||
|
echo $(section "--depth=1 fetching+merging -X theirs with reflog and gc")
|
||||||
|
test24 $REMOTE
|
||||||
|
test25 $REMOTE
|
||||||
|
test26 $REMOTE
|
||||||
|
echo $(section "--depth=1 fetching+merging -s ours with reflog and gc")
|
||||||
|
test27 $REMOTE
|
||||||
|
test28 $REMOTE
|
||||||
|
test29 $REMOTE
|
||||||
|
|
||||||
|
|
||||||
elif [ -n "$TEST_NUM" ]; then
|
elif [ -n "$TEST_NUM" ]; then
|
||||||
case $TEST_NUM in
|
case $TEST_NUM in
|
||||||
@ -774,8 +996,40 @@ elif [ -n "$TEST_NUM" ]; then
|
|||||||
test12 $REMOTE;;
|
test12 $REMOTE;;
|
||||||
13)
|
13)
|
||||||
test13 $REMOTE;;
|
test13 $REMOTE;;
|
||||||
|
14)
|
||||||
|
test14 $REMOTE;;
|
||||||
|
15)
|
||||||
|
test15 $REMOTE;;
|
||||||
|
16)
|
||||||
|
test16 $REMOTE;;
|
||||||
|
17)
|
||||||
|
test17 $REMOTE;;
|
||||||
|
18)
|
||||||
|
test18 $REMOTE;;
|
||||||
|
19)
|
||||||
|
test19 $REMOTE;;
|
||||||
|
20)
|
||||||
|
test20 $REMOTE;;
|
||||||
21)
|
21)
|
||||||
test21 $REMOTE;;
|
test21 $REMOTE;;
|
||||||
|
22)
|
||||||
|
test22 $REMOTE;;
|
||||||
|
23)
|
||||||
|
test23 $REMOTE;;
|
||||||
|
24)
|
||||||
|
test24 $REMOTE;;
|
||||||
|
25)
|
||||||
|
test25 $REMOTE;;
|
||||||
|
26)
|
||||||
|
test26 $REMOTE;;
|
||||||
|
26)
|
||||||
|
test26 $REMOTE;;
|
||||||
|
27)
|
||||||
|
test27 $REMOTE;;
|
||||||
|
28)
|
||||||
|
test28 $REMOTE;;
|
||||||
|
29)
|
||||||
|
test29 $REMOTE;;
|
||||||
*)
|
*)
|
||||||
echo "Error: Invalid test number"
|
echo "Error: Invalid test number"
|
||||||
die;;
|
die;;
|
||||||
|
93
readme.md
93
readme.md
@ -1,40 +1,34 @@
|
|||||||
## Testing of differeng cloning methods
|
## Testing of differeng cloning methods
|
||||||
Our objective is to find the least-consuming method in terms of memory and bandwidth resources.
|
Our objective is to find the least-consuming method in terms of memory and bandwidth resources.
|
||||||
We are interested in cloning one specific state of the repository. We are not interested in its history or the possibility to change it from the server where it has been cloned. The first step is done by the script creation_repo.sh which creates an adequate repository to act as a local remote. The testing in itself is done by performance_tests.sh.
|
We are interested in cloning one specific state of the repository. We are not interested in its history or the possibility to change it from the server where it has been cloned. The first step is done by the script creation_repo.sh which creates an adequate repository to act as a local remote. The testing in itself is done by performance_tests.sh.
|
||||||
NB:The large file storage is not tested by this script because it relies on additional remote stockage and we are interested in reducing the overall stockage for environmental purposes.
|
|
||||||
|
|
||||||
## Creation of the test repository
|
## Creation of the test repository
|
||||||
The script creation_repo.sh creates a performance_testing repository.
|
The script creation_repo.sh creates a remote/performance_testing repository.
|
||||||
NAME
|
NAME
|
||||||
creation_repo.sh
|
creation_repo.sh
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
creation_repo.sh [-h]
|
creation_repo.sh [-h] [-s]
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
It creates a remote directory in the current directory, then create a remote/performance_testing git repository. This git repository is filled with randomly generated binary.
|
This script creates a ./remote directory in the current directory, then creates a remote/performance_testing git repository.
|
||||||
|
This git repository is filled with randomly generated binary files described in the readme.md.
|
||||||
OPTIONS
|
OPTIONS
|
||||||
-h prints the help.
|
-h prints the help.
|
||||||
|
-s creates a submodule remote/submodule_for_performance_testing and includes it in remote/performance_testing. "
|
||||||
|
|
||||||
Here is a history of the commits:
|
Here is a history of the commits:
|
||||||
### branch main
|
### branch main
|
||||||
commit f665df376fa57880b5edfb85b156c7703601980e (tag: start)
|
commit sample0 1M created (tag: start)
|
||||||
sample0 1M created
|
commit sample1 1M created
|
||||||
commit a17812c13a69986c1103e0d06ff0a0b59a3a4a63
|
commit sample3 1M created
|
||||||
sample1 1M created
|
commit sample4 5M created
|
||||||
commit bd9d8e9421c3253abba47b9def480f1b2d595568
|
commit sample4 5M deleted
|
||||||
sample3 1M created
|
[if -s is selected] commit adding submodule_for_performance_testing module
|
||||||
commit 0e599f3b47bf3200dc6e2734df0c6e655c0d8dde
|
|
||||||
sample4 5M created
|
|
||||||
commit effb3cab262e6e1e8242e524e1862b6f77d7ad38
|
|
||||||
sample4 5M deleted
|
|
||||||
### branch secondary
|
### branch secondary
|
||||||
commit 643cdbbda81f4c4f26513b9d6ecca3d436e97040
|
commit sample0 1M created
|
||||||
sample0 1M created
|
commit sample1 1M created
|
||||||
commit b4bac1f2a2c1b4ab325751748b9496cccc65b082
|
commit sample2 500K created
|
||||||
sample1 1M created
|
|
||||||
commit e69695f08e79c160045b3319297597a9d8c9b513
|
|
||||||
sample2 500K created
|
|
||||||
|
|
||||||
Which gives us the latest state:
|
Which gives the latest state:
|
||||||
### branch main
|
### branch main
|
||||||
sample0 1M
|
sample0 1M
|
||||||
sample1 1M
|
sample1 1M
|
||||||
@ -44,8 +38,16 @@ sample0 1M
|
|||||||
sample1 1M
|
sample1 1M
|
||||||
sample2 500K
|
sample2 500K
|
||||||
|
|
||||||
|
If the -s option is selected, submodule_for_performance_testing is created with this history of commits:
|
||||||
|
### branch main
|
||||||
|
commit first 1M sample created
|
||||||
|
|
||||||
|
which gives the latest state:
|
||||||
|
### branch main
|
||||||
|
sub_sample0
|
||||||
|
|
||||||
## Testing
|
## Testing
|
||||||
The script performance_tests.sh measures memory and bandwidth usage for different git commands. It sources creation_repo.sh in order to have an adequate repository to test on. It also sources the script driglibash-base.
|
The script performance_tests.sh measures memory and bandwidth usage for different git commands. It sources the script driglibash-base. It executes creation_repo.sh in order to have an adequate repository to test on.
|
||||||
NAME
|
NAME
|
||||||
performance_tests.sh
|
performance_tests.sh
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
@ -55,13 +57,42 @@ OPTIONS
|
|||||||
-n number executes test number
|
-n number executes test number
|
||||||
-h prints the help.
|
-h prints the help.
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
This script is in writing. It allows you to measure memory and bandwidth usage. The first four test different cloning methods. Te following change the local remote by adding a 1M "sample5" file before testing fetching and merging commands.
|
This script is in writing. It allows you to measure memory and bandwidth usage. The first four test different cloning methods. Te following apply changes to the local remote before testing fetching and merging commands.
|
||||||
TEST0: classic cloning
|
TEST0: classic cloning
|
||||||
TEST1: --single-branch
|
TEST1: --single-branch cloning
|
||||||
TEST2: --depth=1 --no-single-branch
|
TEST2: --depth=1 --no-single-branch cloning
|
||||||
TEST3: --depth=1
|
TEST3: --depth=1 cloning
|
||||||
TEST4: sparse-checking 1M sample0 only
|
TEST4: --depth=1 with reflog and gc cloning
|
||||||
_________________________________________
|
TEST5: sparse-checking 1M sample0 cloning
|
||||||
TEST5: classic fetching and merging
|
_________________
|
||||||
TEST6:
|
TEST6: classic fetching+checking out after addition of a 1M file
|
||||||
|
TEST7: classic fetching+checking out after removal of a 1M file
|
||||||
|
TEST8: classic fetching+checking out after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST9: --depth=1 fetching+checking out after addition of a 1M file
|
||||||
|
TEST10: --depth=1 fetching+checking out after removal of a 1M file
|
||||||
|
TEST11: --depth=1 fetching+checking out after addition then removal of 1M a file
|
||||||
|
|
||||||
|
TEST12: --depth=1 fetching+checking out with reflog annd gc after addition of a 1M file
|
||||||
|
TEST13: --depth=1 fetching+checking out with reflog annd gc after removal of a 1M file
|
||||||
|
TEST14: --depth=1 fetching+checking out with reflog annd gc after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST15: --depth=1 fetching+ --reset=hard after addition of a 1M file
|
||||||
|
TEST16: --depth=1 fetching+ --reset=hard after removal of a 1M file
|
||||||
|
TEST17: --depth=1 fetching+ --reset=hard after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST18: --depth=1 fetching+ --reset=hard and reflog and gc after addition of a 1M file
|
||||||
|
TEST19: --depth=1 fetching+ --reset=hard and reflog and gc after removal of a 1M file
|
||||||
|
TEST20: --depth=1 fetching+ --reset=hard and reflog and gc after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST21: --depth=1 fetching+checking out after addition of a 1M file in submodule
|
||||||
|
TEST22: --depth=1 fetching+checking out after removal of a 1M file in submodule
|
||||||
|
TEST23: --depth=1 fetching+checking out after addition then removal of a 1M file in submodule
|
||||||
|
|
||||||
|
TEST24: --depth=1 fetching+merging -X theirs with reflog and gc after addition of a 1M file
|
||||||
|
TEST25: --depth=1 fetching+merging -X theirs with reflog and gc after removal of a 1M file
|
||||||
|
TEST26: --depth=1 fetching+merging -X theirs with reflog and gc after addition then removal of a 1M file
|
||||||
|
|
||||||
|
TEST27: --depth=1 fetching+merging -s ours with reflog and gc after addition of a 1M file
|
||||||
|
TEST28: --depth=1 fetching+merging -s ours with reflog and gc after removal of a 1M file
|
||||||
|
TEST29: --depth=1 fetching+merging -s ours with reflog and gc after addition then removal of a 1M file"
|
@ -11,7 +11,7 @@ Comment minimiser la consommation en ressources mémoire et flux de données d'u
|
|||||||
|
|
||||||
Le dépôt Git créé n'enverra aucune donnée au remote. Il n'aura aucune utilité de l'historique.
|
Le dépôt Git créé n'enverra aucune donnée au remote. Il n'aura aucune utilité de l'historique.
|
||||||
|
|
||||||
Il pourra éventuellement conserver certains fichiers locaux en plus de ses clonages Git. Il incluera les éventuels submodules. Il peut vouloir télécharger un commit d'une certaine branche ou tag.
|
Il pourra éventuellement conserver certains fichiers locaux en plus de ses clonages Git. En cas de conflit, le remote aura toujours raison. Il incluera les éventuels submodules. Il peut vouloir télécharger un commit d'une certaine branche ou tag.
|
||||||
|
|
||||||
|
|
||||||
# Procédé
|
# Procédé
|
||||||
@ -78,6 +78,7 @@ git gc --aggressive --prune=now
|
|||||||
|
|
||||||
aggressive invoque repack et prend plus de temps. repack défait et refait les packs, qui sont des unités de compression.
|
aggressive invoque repack et prend plus de temps. repack défait et refait les packs, qui sont des unités de compression.
|
||||||
|
|
||||||
|
Cette combinaison ne permet pas de garder des fichiers compilés, néanmoins elle est extrêmement efficace en terme de gains de mémoire.
|
||||||
|
|
||||||
# Détails
|
# Détails
|
||||||
Voici un résumé de différentes pistes explorées afin de réduire l'empreinte du dépôt Git.
|
Voici un résumé de différentes pistes explorées afin de réduire l'empreinte du dépôt Git.
|
||||||
@ -98,5 +99,157 @@ C'est un mécanisme très intéressant, que nous ne retenons pas pour la même
|
|||||||
## Suppression de l'historique
|
## Suppression de l'historique
|
||||||
L'usage de la commande git filter-branch est déconseillé par la documentation Git. Elle présente plusieurs failles de sécurité et de performance. Elle permet de réécrire l'historique des branches grâce à des filtres.
|
L'usage de la commande git filter-branch est déconseillé par la documentation Git. Elle présente plusieurs failles de sécurité et de performance. Elle permet de réécrire l'historique des branches grâce à des filtres.
|
||||||
|
|
||||||
|
La librairie Java repo-cleaner fonctionne, néanmoins la documentation Git estime que la librairie Python filter-repo est plus rapide et plus sûre. Nous ne souhaitons pas devoir installer Python ou Java donc ne creusons pas plus ces deux possibilités.
|
||||||
|
|
||||||
|
Nous souhaitons supprimer tout l'historique sans filtrer, donc la commande git fetch --depth=1 suivie d'un git checkout ou d'un git reset nous convient.
|
||||||
|
|
||||||
|
## checkout ? merge ? reset ?
|
||||||
|
Une fois que l'on a fetched les modifications dans notre dossier local remote/, quelle est la meilleure façon de les appliquer à notre index et working directory ?
|
||||||
|
|
||||||
|
Une première idée est d'utiliser git merge. On ne souhaite pas résoudre de conflits manuellement. Le remote doit toujours prévaloir sur les différences locales.
|
||||||
|
Les commandes git merge -s ours (applique la stratégie ours) et git merge -X theirs (applique la stratégie ort avec l'option theirs) sont intéressantes.
|
||||||
|
### git merge -X theirs
|
||||||
|
Cette commande applique une stratégie ort qui en cas de conflit, donne la prévalence à theirs.
|
||||||
|
Néanmoins, puisque l'on travaille en --depth=1, les deux branches n'ont pas d'ancêtre commun, et on doit d'ailleurs fournir l'option --allow-unrelated-histories. L'absence d'ancêtre commun empêche Git de reconnaître les similitudes à l'intérieur d'un même fichier. N'importe quelle modification d'un fichier tracé sur ours, même sur une nouvelle ligne, causera ainsi un conflit et sera écrasée. Cette commande permet tout de même de sauvegarder les fichiers nouvellement créés sur ours, qu'ils soient committés ou non.
|
||||||
|
Elle peut donc se montrer intéressante dans notre cas.
|
||||||
|
Un gros inconvénient de cette commande est en cas de délétion d'un fichier sur theirs : il ne sera pas supprimé sur ours.
|
||||||
|
|
||||||
|
### git merge -s ours
|
||||||
|
git merge -s ours va ignorer tous les changements et créations de fichiers committés sur theirs. Elle va également ignorer les modifications non committées. En revanche, les créations de fichier non-committées sont conservées. C'est le même résultat qu'avec la commande git reset --hard.
|
||||||
|
C'est une option intéressante dans notre cas, car on pourrait vouloir sauvegarder uniquement des fichiers de compilation non committés.
|
||||||
|
Comme l'option git merge -s theirs n'existe pas, on doit faire une petite manipulation :
|
||||||
|
#on veut merge origin/main sur main, en donnant la prévalence à origin/main
|
||||||
|
#création d'une nouvelle branche temporaire temp que l'on check out, sourcée sur origin/main
|
||||||
|
git switch -c temp origin/main
|
||||||
|
#merge de main sur temp, en donnant la prévalence à temp qui est identique à origin/main
|
||||||
|
git merge -s ours --allow-unrelated-histories main
|
||||||
|
#on retourne sur main
|
||||||
|
git checkout main
|
||||||
|
#on merge temp.
|
||||||
|
git merge --allow-unrelated-histories temp
|
||||||
|
#suppression de temp
|
||||||
|
git branch -D temp
|
||||||
|
|
||||||
|
### git checkout –force -B main origin/main
|
||||||
|
|
||||||
|
Cette commande est équivalente à git merge -s ours décrite ci-dessus. Elle évite la petite manipulation de branche temporaire. En revanche, on finit en detached HEAD state, ce qui n'est pas un problème dans notre cas puisque l'on ne souhaite pas push de modification depuis notre dépôt.
|
||||||
|
|
||||||
|
### git reset --hard
|
||||||
|
git reset --hard va ignorer tous les changements et créations de fichiers committés sur theirs. Elle va également ignorer les modifications non committées. En revanche, les créations de fichier non-committées sont conservées. C'est le même résultat qu'avec la commande git merge -s ours, mais en une ligne.
|
||||||
|
C'est une option intéressante dans notre cas, car on pourrait vouloir sauvegarder uniquement des fichiers de compilation non committés.
|
||||||
|
|
||||||
|
Les tests nous montrent que les options les plus économes en mémoire sont git merge -s ours et git --reset hard, qui font la même chose. Néanmoins git reset --hard tient en une ligne et n'implique pas la création d'une branche temporaire, c'est donc celle que nous retenons.
|
||||||
|
|
||||||
|
|
||||||
|
RESULTATS des tests :
|
||||||
|
|
||||||
|
======================================= Tests on the initial populating of the repository
|
||||||
|
============================================================= TEST0
|
||||||
|
TEST 0: classic cloning.
|
||||||
|
memory usage: 22668
|
||||||
|
bandwidth usage (submodule excluded): 8.49 MiB
|
||||||
|
============================================================= TEST1
|
||||||
|
TEST 1: --single-branch cloning.
|
||||||
|
memory usage: 22168
|
||||||
|
bandwidth usage (submodule excluded): 8.00 MiB
|
||||||
|
============================================================= TEST2
|
||||||
|
TEST 2: --depth=1 --no-single-branch
|
||||||
|
memory usage: 17552
|
||||||
|
bandwidth usage (submodule excluded): 3.49 MiB
|
||||||
|
============================================================= TEST3
|
||||||
|
TEST 3: --depth=1 with single-branch (default))
|
||||||
|
memory usage: 17052
|
||||||
|
bandwidth usage (submodule excluded): 3.00 MiB
|
||||||
|
============================================================= TEST4
|
||||||
|
TEST 4: --depth=1 with single-branch (default) and reflog and gc
|
||||||
|
HEAD is now at 23700cf adding submodule_for_performance_testing module
|
||||||
|
memory usage: 17056
|
||||||
|
bandwidth usage (submodule excluded): 3.00 MiB
|
||||||
|
============================================================= TEST5
|
||||||
|
TEST 5 : sparse-checking only sample0 with depth=1
|
||||||
|
memory usage: 10060
|
||||||
|
bandwidth usage (submodule excluded): unknown
|
||||||
|
============================================ Tests on the updating of the repository
|
||||||
|
================================================= classic fetching+checking out
|
||||||
|
============================================================= TEST6
|
||||||
|
TEST 6: after addition of a 1M file
|
||||||
|
memory usage: +2108
|
||||||
|
============================================================= TEST7
|
||||||
|
TEST 7: after removal of a 1M file
|
||||||
|
memory usage: -972
|
||||||
|
============================================================= TEST8
|
||||||
|
TEST 8: after addition then removal of a 1M file
|
||||||
|
memory usage: 1088
|
||||||
|
============================================== fetching+checking out with --depth=1
|
||||||
|
============================================================= TEST9
|
||||||
|
TEST 9: after addition of a 1M file
|
||||||
|
memory usage: +2112
|
||||||
|
============================================================= TEST10
|
||||||
|
TEST 10: after removal of a 1M file
|
||||||
|
memory usage: -968
|
||||||
|
============================================================= TEST11
|
||||||
|
TEST 11: after addition then removal of a 1M file
|
||||||
|
memory usage: 48
|
||||||
|
========================================= --depth=1 fetching+checking out reflog and gc
|
||||||
|
============================================================= TEST12
|
||||||
|
TEST 12: after addition of a 1M file
|
||||||
|
memory usage: +2052
|
||||||
|
============================================================= TEST13
|
||||||
|
TEST 13: after removal of a 1M file
|
||||||
|
memory usage: -1020
|
||||||
|
============================================================= TEST14
|
||||||
|
TEST 14: after addition then removal of a 1M file
|
||||||
|
memory usage: 4
|
||||||
|
================================================ --depth=1 fetching+ reset --hard
|
||||||
|
============================================================= TEST15
|
||||||
|
TEST 15: after addition of a 1M file
|
||||||
|
memory usage: +2116
|
||||||
|
============================================================= TEST16
|
||||||
|
TEST 16: after removal of a 1M file
|
||||||
|
memory usage: -964
|
||||||
|
============================================================= TEST17
|
||||||
|
TEST 17: after addition then removal of a 1M file
|
||||||
|
memory usage: 52
|
||||||
|
======================================= --depth=1 fetching+ reset --hard and reflog and gc
|
||||||
|
============================================================= TEST18
|
||||||
|
TEST 18: after addition of a 1M file
|
||||||
|
memory usage: 2056
|
||||||
|
============================================================= TEST19
|
||||||
|
TEST 19: after removal of a 1M file
|
||||||
|
memory usage: -1016
|
||||||
|
============================================================= TEST20
|
||||||
|
TEST 20: after addition then removal of a 1M file
|
||||||
|
memory usage: 8
|
||||||
|
============================ --depth=1 fetching+checking out after modification applied in submodule
|
||||||
|
============================================================= TEST21
|
||||||
|
TEST 21: after addition of a 1M file
|
||||||
|
memory usage: 2112
|
||||||
|
============================================================= TEST22
|
||||||
|
TEST 22: after removal of a 1M file
|
||||||
|
memory usage: -976
|
||||||
|
============================================================= TEST23
|
||||||
|
TEST 23: after addition then removal of a 1M file
|
||||||
|
memory usage: 48
|
||||||
|
==================================== --depth=1 fetching+merging -X theirs with reflog and gc
|
||||||
|
============================================================= TEST24
|
||||||
|
TEST 24: after addition of a 1M file
|
||||||
|
memory usage: +2056
|
||||||
|
============================================================= TEST25
|
||||||
|
TEST 25: after removal of a 1M file
|
||||||
|
memory usage: 8
|
||||||
|
============================================================= TEST26
|
||||||
|
TEST 26: after addition then removal of a 1M file
|
||||||
|
memory usage: 8
|
||||||
|
===================================== --depth=1 fetching+merging -s ours with reflog and gc
|
||||||
|
============================================================= TEST27
|
||||||
|
TEST 27: after addition of a 1M file
|
||||||
|
memory usage: +2056
|
||||||
|
============================================================= TEST28
|
||||||
|
TEST 28: after removal of a 1M file
|
||||||
|
memory usage: -1016
|
||||||
|
============================================================= TEST29
|
||||||
|
TEST 29: after addition then removal of a 1M file
|
||||||
|
memory usage: 8
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user