2014-10-20 3 views
1

Я ищу способ автоматической синхронизации (зеркального отображения) одного репо на серверах 2 git git. К сожалению, у меня не может быть одного сервера по причинам разрешений.Git sync multiple masters

Люди должны иметь возможность нажимать изменения (и ветви) на один из серверов, и эти изменения должны автоматически реплицироваться на другом сервере.

Любая идея о том, как это сделать?

Большое спасибо

+1

Возможный дубликат: http://stackoverflow.com/questions/14288288/gitlab-repository-mirroring –

ответ

1

Это хорошо объяснено под названием «Дублирование хранилища Git». Взято из github article:

Если вы хотите зеркалировать репозиторий в другом месте, включая получение обновлений от оригинала, вы можете клонировать зеркало и периодически нажимать изменения.

# Make a bare mirrored clone of the repository 
git clone --mirror https://github.com/exampleuser/repository-to-mirror.git 

# Set the push location to your mirror 
cd repository-to-mirror.git 
git remote set-url --push origin https://github.com/exampleuser/mirrored 

Зеркальный клон включает в себя все удаленные филиалы и тег, но все локальные ссылки будут перезаписаны каждый раз, когда вы запрашиваете, поэтому он всегда будет таким же, как оригинальный репозиторий. Настройка URL-адреса для push-файлов упрощает нажатие на ваше зеркало. Чтобы обновить свое зеркало, выберите обновления и нажмите, которые можно автоматизировать, запустив задание cron.

git fetch -p origin 
git push --mirror 

Если вы хотите автоматизировать этот процесс с помощью кода или сценарий Ruby, вы можете сделать это, а также с помощью Git Duplicator Рубиновый камень.

0

Для этого у вас есть какая-то система развертывания, как Jenkins. Там вы можете добавить свой сервер и разместить команду для запуска на всех серверах.

Вы можете установить некоторые плагины Jenkins для SSH, например, или использовать что-то вроде Chef/Puppet или Capistrano. Есть несколько инструментов.

+0

Привет, спасибо за ваш ответ. Какие команды git вы запустили бы на своем сервере Jenkins, чтобы убедиться, что хранилища остаются в синхронизации? –