Синхронизация BitBucket -> GitLab

Перед выполнением скриптов убедитесь, что у вас настроен config у git

Настройки Git

1234git config --global user.email "you@example.com"git config --global user.name "Your Name"git config --global pull.rebase falsegit config --global http.sslVerify false
  1. Указывает ваш E-mail (рекомендуется ставить vtb.ru)
  2. Указывает ваш ФИО (идентификатор токена)
  3. Настройка для отключения rebase при выполнении pull — убирает предупреждения при pull из Bitbucket
  4. Выключает SSL верификацию — обязательна для выполнения push в GitLab репозиторий

В 2-gitlab-push.sh требуется указать свой логин и пароль от GitLab репозитория


Для синхронизации используйте пустую директорию

При выполнении pull и push некоторые настройки в .git/config изменяются, поэтому используйте пустую директорию!

1-bitbucket-pull.sh

# PULL
# Скрипт создаст клон репы в текущей директории

# Params
REPO_URL="https://bitbucket.org/scm/group-name/project-name.git"
PROJECT_NAME="project-name"

# Инициализация репы при отсутствии директории
if [ ! -d "$PROJECT_NAME" ]; then
    git clone $REPO_URL
fi

# Пулл текущей ветки
cd $PROJECT_NAME
git remote set-url origin $REPO_URL
git remote set-branches origin '*'
git fetch

# Получение списка уже отслеживаемых веток
lbranches=`git branch | tr -d '*'`

# Пулл каждой ветки
for b in `git branch -r | grep -v '\->'`; do
    if [[ $lbranches != *"${b#origin/}"* ]]; then
        echo "New branch for track: $b"
        git branch --track "${b#origin/}" "$b"
    fi
    echo "Checkout branch $b"
    git checkout "${b#origin/}"

    git pull --all
    git fetch --tags -f
    git pull origin --tags
done

read -rsp $'\nPress enter to exit...\n'

2-gitlab-push.sh

# PUSH

# Params

REPO_URL="http://gitlab.com/group-name/project-name.git"
PROJECT_NAME="project-name"
USERNAME=""
PASSWORD=""

# Обработка параметров
protocol_tmp="$(echo $REPO_URL | grep :// | sed -e's,^\(.*://\).*,\1,g')"
REPO_PROTOCOL="$(echo $protocol_tmp | cut -f1 -d:)"
REPO_HOST="$(echo ${REPO_URL/$protocol_tmp/})"

# Смена репы
cd $PROJECT_NAME
git config --global http."$REPO_HOST".sslVerify false
git remote set-url origin $REPO_PROTOCOL://$USERNAME:$PASSWORD\@$REPO_HOST

# Пуш
git push --tags --force
git push --all --force

read -rsp $'\nPress enter to exit...\n'

Алгоритм синхронизации

  1. Выполните настройку git через gitbash
  2. Введите логин и пароль от GitLab репозитория в скрипт push
  3. Запуште все свои изменения и попросите запушить все изменения сделанные вашими коллегами в BitBucket 
  4. Создайте пустую директорию и перенесите в нее скрипты
  5. Выполните скрипт: 1-bitbucket-pull.sh
  6. Выполните скрипт: 2-gitlab-push.sh

Оцените автора
Kosenkov.Pro
Добавить комментарий