Git Proxy: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) (Новая страница: «Категория:Git Категория:Linux Категория:CICD =Простое зеркало для GIT= Простой скрипт для…») |
Sirmax (обсуждение | вклад) |
||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 2: | Строка 2: | ||
[[Категория:Linux]] |
[[Категория:Linux]] |
||
[[Категория:CICD]] |
[[Категория:CICD]] |
||
| + | [[Категория:GOGS]] |
||
=Простое зеркало для GIT= |
=Простое зеркало для GIT= |
||
Простой скрипт для того что б держать локальную копию - нужен когда, например, плохая связь с гитхабом. |
Простой скрипт для того что б держать локальную копию - нужен когда, например, плохая связь с гитхабом. |
||
| + | <BR> |
||
| + | Предпологается что Git-сервер установлен и настроен, в примере - на том же хосте <B> DESTINATIOIN_REPO="git@localhost:gogs/$(basename ${REPO_NAME} )"</B> |
||
<PRE> |
<PRE> |
||
| Строка 38: | Строка 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