From df77ff047a2a00c044cb1512e0c9964794e1b206 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bar=C4=B1=C5=9F=20Metin?= Date: Thu, 1 Jul 2010 17:13:58 +0200 Subject: [PATCH] only mirror git repositories that are on both sides --- scripts/git-mirror.sh | 50 ++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/scripts/git-mirror.sh b/scripts/git-mirror.sh index 1ddcd57..6dfe88f 100755 --- a/scripts/git-mirror.sh +++ b/scripts/git-mirror.sh @@ -39,32 +39,38 @@ function mirror () { MIRROR_REPO=${MIRROR_GIT}/${GIT_NAME} MASTER_REPO=${MASTER_GIT}/${GIT_NAME} - if [ -d ${REPO_DIR} ] + # if there is no remote repository it may be that we only have + # the repository locally and don't need to mirror + git ls-remote $MIRROR_REPO &> /dev/null + if [ $? -eq 0 ] then - msg "pulling from ${REPO_NAME}" - run "git fetch origin --tags" ${REPO_DIR} - run "git fetch origin" ${REPO_DIR} - run "git merge --ff origin/master" ${REPO_DIR} - if [ $? -ne 0 ] + if [ -d ${REPO_DIR} ] then - error "Can not fetch from ${MASTER_REPO}" + msg "pulling from ${NAME}" + run "git fetch origin --tags" ${REPO_DIR} + run "git fetch origin" ${REPO_DIR} + run "git merge --ff origin/master" ${REPO_DIR} + if [ $? -ne 0 ] + then + error "Can not fetch from ${MASTER_REPO}" + fi + else + msg "mirroring ${NAME} for the first time" + run "git clone ${MIRROR_REPO}" ${LOCAL_MIRROR_DIR} + run "git remote add local_master ${MASTER_REPO}" ${REPO_DIR} fi - else - msg "mirroring in ${REPO_NAME} for the first time" - run "git clone ${MIRROR_REPO}" ${LOCAL_MIRROR_DIR} - run "git remote add local_master ${MASTER_REPO}" ${REPO_DIR} - fi - msg "pushing ${REPO_NAME} to local master" - run "git fetch local_master --tags" ${REPO_DIR} - run "git fetch local_master" ${REPO_DIR} - run "git merge --ff local_master/master" ${REPO_DIR} - if [ $? -ne 0 ] - then - error "Can not fetch from ${MIRROR_REPO}" - else - run "git push local_master" ${REPO_DIR} - run "git push --tags local_master" ${REPO_DIR} + msg "pushing ${NAME} to local master" + run "git fetch local_master --tags" ${REPO_DIR} + run "git fetch local_master" ${REPO_DIR} + run "git merge --ff local_master/master" ${REPO_DIR} + if [ $? -ne 0 ] + then + error "Can not fetch from ${MIRROR_REPO}" + else + run "git push local_master" ${REPO_DIR} + run "git push --tags local_master" ${REPO_DIR} + fi fi done } -- 2.43.0