Git Proxy: различия между версиями

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску
 
(не показаны 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 git repo3.git"
+
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