GitRoot
craft your forge, build your project, grow your community freely
1#!/usr/bin/env bash
2
3# SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
4#
5# SPDX-License-Identifier: EUPL-1.2
6
7ROOT_REPO_NAME="root"
8REPO1_NAME="repo1"
9REPO2_NAME="repo2"
10
11SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
12
13SERVER_PORT="4545"
14SERVER_DATA_DIR="/tmp/gitrootData"
15
16NB_BRANCH=50
17NB_COMMIT=50
18
19quiet_git() {
20 echo "🚀 git $@" >> /tmp/mylog.txt
21 GIT_PROTOCOL=version=1 GIT_TRACE=true GIT_TRACE_PACKET=true git "$@" &>> /tmp/mylog.txt
22}
23
24real_quiet_git() {
25 git "$@" &>> /dev/null
26}
27
28report() {
29 echo "$1" >> /tmp/mylog.txt
30 echo "$1"
31}
32
33APP=$(lsof -i tcp:${SERVER_PORT} | awk 'NR!=1 {print $2}')
34if [ -z "$APP" ]; then
35 report "🟢 Gitroot not launched"
36else
37 kill ${APP}
38 report "🟢 Gitroot killed"
39fi
40
41##### launch gitroot
42report "🏁 launch gitroot"
43
44cd ${SCRIPT_DIR}/../server
45GIT_TRACE_PACKET=true go run . -data="${SERVER_DATA_DIR}" &>> /tmp/mylog.txt &
46
47sleep 1.3
48
49cd /tmp/${REPO1_NAME}
50
51real_quiet_git checkout main
52
53for (( i=0; i<=$NB_BRANCH; i++ ))
54do
55 real_quiet_git branch -D bigCommitsBranch_$i
56done
57
58for (( i=0; i<=$NB_BRANCH; i++ ))
59do
60 SHOULD_START_MAIN=$(shuf -i 0-2 -n 1)
61 if (( SHOULD_START_MAIN > 1 )); then
62 real_quiet_git checkout main
63 elif (( SHOULD_START_MAIN > 0 )); then
64 real_quiet_git checkout -
65 fi
66
67 real_quiet_git checkout -b bigCommitsBranch_$i
68
69 for (( j=0; j<=$NB_COMMIT; j++ ))
70 do
71 echo "${i}_${j}" >> issues/bigCommits.md
72 real_quiet_git add .
73 real_quiet_git commit -m "my ${i}_${j} commit"
74 done
75
76 quiet_git push -f origin bigCommitsBranch_$i
77 report "🟢 push bigCommitsBranch_$i"
78done
79
80cd /tmp/${REPO1_NAME}_2
81real_quiet_git checkout main
82quiet_git pull --rebase
83
84cd /tmp/${REPO1_NAME}
85
86for (( i=0; i<=$NB_BRANCH; i++ ))
87do
88 real_quiet_git checkout bigCommitsBranch_$i
89
90 RESET=$(shuf -i 0-$NB_COMMIT -n 1)
91 real_quiet_git reset --hard HEAD~$RESET
92
93 count=$((NB_COMMIT-RESET))
94
95 for (( j=0; j<=$count; j++ ))
96 do
97 echo "${i}_${j}_2" >> issues/bigCommits.md
98 real_quiet_git add .
99 real_quiet_git commit -m "my ${i}_${j}_2 commit"
100 done
101
102 real_quiet_git push -f origin bigCommitsBranch_$i
103 report "🟢 push bigCommitsBranch_$i"
104done
105
106cd /tmp/${REPO1_NAME}_2
107quiet_git pull --rebase