Git Proxy
Материал из noname.com.ua
Версия от 09:02, 7 октября 2020; Sirmax (обсуждение | вклад) (Новая страница: «Категория:Git Категория:Linux Категория:CICD =Простое зеркало для GIT= Простой скрипт для…»)
Простое зеркало для GIT
Простой скрипт для того что б держать локальную копию - нужен когда, например, плохая связь с гитхабом.
[Unit] Description=Git Cloner After=syslog.target After=network.target After=mariadb.service mysqld.service postgresql.service memcached.service redis.service [Service] #LimitNOFILE=65535 Type=simple User=git Group=git WorkingDirectory=/home/git-clones ExecStart=/home/git-clones/update_repos.sh Restart=always Environment=USER=git HOME=/home/git ProtectSystem=full PrivateDevices=yes PrivateTmp=yes NoNewPrivileges=true [Install] WantedBy=multi-user.target
#!/bin/bash
set -x
REPOS="repo1.git repo2 git repo3.git"
WORKDIR="/home/git-clones"
update_repo() {
SOURCE_REPO="https://github.com/${REPO_NAME}"
DESTINATIOIN_REPO="git@localhost:gogs/$(basename ${REPO_NAME} )"
if [ -d ${WORKDIR} ];
then
pushd ${WORKDIR}
else
mkdir -p ${WORKDIR}
pushd ${WORKDIR}
fi
if [ -d $(basename ${REPO_NAME}) ];
then
pushd $(basename ${REPO_NAME})
git \
remote \
set-url \
--push \
origin ${DESTINATIOIN_REPO}
git \
fetch \
--all
git \
push --mirror
popd
else
git clone --mirror ${SOURCE_REPO}
fi
popd
}
update_all_repos() {
for REPO_NAME in ${REPOS};
do
echo ${REPO_NAME}
update_repo
done
}
echo "Start"
while true;
do
update_all_repos
done