Перед выполнением скриптов убедитесь, что у вас настроен config у git
Настройки Git
1234 | git config --global user.email "you@example.com" git config --global user.name "Your Name" git config --global pull.rebase false git config --global http.sslVerify false |
- Указывает ваш E-mail (рекомендуется ставить vtb.ru)
- Указывает ваш ФИО (идентификатор токена)
- Настройка для отключения rebase при выполнении pull — убирает предупреждения при pull из Bitbucket
- Выключает 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'
Алгоритм синхронизации
- Выполните настройку git через gitbash
- Введите логин и пароль от GitLab репозитория в скрипт push
- Запуште все свои изменения и попросите запушить все изменения сделанные вашими коллегами в BitBucket
- Создайте пустую директорию и перенесите в нее скрипты
- Выполните скрипт: 1-bitbucket-pull.sh
- Выполните скрипт: 2-gitlab-push.sh