Git Proxy: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 5: | Строка 5: | ||
=Простое зеркало для GIT= |
=Простое зеркало для GIT= |
||
Простой скрипт для того что б держать локальную копию - нужен когда, например, плохая связь с гитхабом. |
Простой скрипт для того что б держать локальную копию - нужен когда, например, плохая связь с гитхабом. |
||
+ | <BR> |
||
+ | Предпологается что Git-сервер установлен и настроен, в примере - на том же хосте <B> DESTINATIOIN_REPO="git@localhost:gogs/$(basename ${REPO_NAME} )"</B> |
||
<PRE> |
<PRE> |
||
Строка 39: | Строка 41: | ||
set -x |
set -x |
||
− | REPOS="repo1.git repo2 |
+ | REPOS="repo1.git repo2.git repo3.git" |
WORKDIR="/home/git-clones" |
WORKDIR="/home/git-clones" |
||
Текущая версия на 18:22, 7 октября 2020
Простое зеркало для GIT
Простой скрипт для того что б держать локальную копию - нужен когда, например, плохая связь с гитхабом.
Предпологается что Git-сервер установлен и настроен, в примере - на том же хосте DESTINATIOIN_REPO="git@localhost:gogs/$(basename ${REPO_NAME} )"
[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