본문 바로가기

devops

GitLab 레포지토리 마이그레이션

반응형

as-is Gitlab → to-be Gitlab 마이그레이션

스크립트 작성

일일이 신규 gitlab으로 옮기기 귀찮아서 쉘스크립트 작성

 

gitlab-repo-migration.sh

#!/bin/bash

echo "All params = $@"
for i in $@
do
    echo "$i ################################################"
    git clone https://gitlab-original-domain.com/gitlab-group-name/$i.git
    cd ./$i
    git branch -r | grep -v '\->' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
    git fetch --all
    git pull --all
    git remote remove origin
    git remote add origin https://gitlab-tobe-domain.com/gitlab-group-name/$i.git
    git push --all
    cd ..
done

쉘스크립트 내용을 간단히 설명하자면

실행시 argument 인자를 받아서 loop를 도는 형태, 여러개 인자를 받는다면 여러번 실행한다.

argument 인자는 기존 repo의 명칭이 된다.(프로젝트 root 디렉토리명 : *.git)

모든 브랜치를 다 fetch, full을 한 다음

해당 repo의 as-is origin을 제거한다.

그리고 새로운 gitlab origin 주소를 셋팅하고 그 origin으로 모든 브랜치를 push한다.

실행

chmod 755 ./git-repo-migration.sh

./git-repo-migration.sh \
first-repo-name \
second-repo-name \
third-repo-name

권한 셋팅하고 git 프로젝트를 인자로 입력한다.

 

인자로 입력한 모든 git repo를 pull하여 신규 gitlab에다가 push한다.

인자로 입력한 모든 git repo를 pull하여 신규 gitlab에다가 push한다.

 

 

 

 

 

반응형