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