git_update/test/creation_repo.sh

124 lines
3.3 KiB
Bash
Raw Normal View History

#!/bin/bash
2024-06-28 16:29:11 +00:00
Help()
{
echo "
NAME
creation_repo.sh
SYNOPSIS
2024-07-08 08:28:35 +00:00
creation_repo.sh [-h] [-s]
2024-06-28 16:29:11 +00:00
DESCRIPTION
This script creates a ./remote directory in the current directory, then creates a remote/performance_testing git repository.
2024-07-08 08:28:35 +00:00
This git repository is filled with randomly generated binary files described in the readme.md.
2024-06-28 16:29:11 +00:00
OPTIONS
2024-07-08 08:28:35 +00:00
-h prints the help.
-l [link] adds the linked online repository as remote and pushes changes to it. Must be en empty repository.
2024-07-08 08:28:35 +00:00
-s creates a submodule remote/submodule_for_performance_testing and includes it in remote/performance_testing. "
}
create_random_file(){
dd if=/dev/urandom of=$1 bs=$2 count=1 &> /dev/null
2024-06-28 16:29:11 +00:00
}
2024-07-08 08:28:35 +00:00
REPO_NAME=git_update_testing
2024-07-08 08:28:35 +00:00
REPO_PATH=./remote
WITH_SUBMODULE="false"
SUB_NAME="submodule"
WITH_LINK="false"
while getopts ":hn:sl:" option; do
2024-06-28 16:29:11 +00:00
case $option in
2024-07-08 08:28:35 +00:00
h)
2024-06-28 16:29:11 +00:00
Help
exit;;
n)
REPO_NAME=$OPTARG;;
s)
2024-07-08 08:28:35 +00:00
WITH_SUBMODULE="true";;
l)
WITH_LINK="true"
LINK=$OPTARG;;
2024-07-08 08:28:35 +00:00
\?)
2024-06-28 16:29:11 +00:00
echo "Error: Invalid option"
exit;;
esac
done
2024-07-03 12:51:49 +00:00
if [ ! -d $REPO_PATH ]; then
mkdir $REPO_PATH
fi
cd $REPO_PATH
if [ ! -d $REPO_NAME ]; then
2024-07-17 09:54:29 +00:00
echo "remote/performance testing will be created"
2024-07-03 12:51:49 +00:00
mkdir $REPO_NAME
cd $REPO_NAME
git init
git branch -m main
2024-07-04 16:29:55 +00:00
create_random_file 'sample0' '1M'
2024-07-03 12:51:49 +00:00
git add .
git commit -m"first 1M sample created"
2024-07-04 16:29:55 +00:00
create_random_file 'sample1' '1M'
git add sample1
2024-07-03 12:51:49 +00:00
git commit -m"second 1M sample created"
git branch secondary
git checkout secondary
2024-07-04 16:29:55 +00:00
create_random_file 'sample2' '500K'
2024-07-03 12:51:49 +00:00
git add sample2
git commit -m"first 500K sample created in branch secondary"
git checkout main
2024-07-04 16:29:55 +00:00
create_random_file 'sample4' '5M'
2024-07-03 12:51:49 +00:00
git add sample4
git commit -m"first 5M sample created"
git tag tagging_point
create_random_file 'sample3' '1M'
git add sample3
git commit -m"third 1M sample created"
2024-07-03 12:51:49 +00:00
rm sample4
git add sample4
git commit -m"sample4 deleted"
2024-07-08 08:28:35 +00:00
cd ..
if [ "$WITH_SUBMODULE" = "true" ]; then
2024-07-08 09:19:27 +00:00
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
git submodule add ../$SUB_NAME
git commit -am "adding $SUB_NAME module"
fi
2024-07-05 07:47:37 +00:00
cd ..
2024-07-08 09:19:27 +00:00
else # $REPO_NAME exists
echo "remote/$REPO_NAME already exists"
2024-07-08 09:19:27 +00:00
if [[ "$WITH_SUBMODULE" = "true" && ! -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
git submodule add ../$SUB_NAME
2024-07-08 09:19:27 +00:00
git commit -am "adding $SUB_NAME module"
elif [[ "$WITH_SUBMODULE" != "true" && -d $SUB_NAME ]]; then
cd $REPO_NAME
git reset --hard HEAD~1 &> /dev/null
rm -rf $SUB_NAME &> /dev/null
2024-07-08 09:19:27 +00:00
cd ..
rm -rf $SUB_NAME
fi
2024-07-03 12:51:49 +00:00
fi
if [ "$WITH_LINK" = "true" ]; then
cd $REPO_NAME
if [ $(git remote | grep "origin" | wc -l) = 0 ]; then
echo "adding origin"
git remote add origin $LINK
git push origin -u --all
git push origin -u --tags
fi
fi
2024-07-08 09:19:27 +00:00
cd ..