Как сделать git push на два сервера (зеркало) - PullRequest
0 голосов
/ 29 января 2012

У меня есть два сервера, на которых запущен git, один основной экземпляр с установленным gitorious, а другой - в облаке. Я хотел бы сохранить их равными. Каждое нажатие, которое я выполняю на своей локальной машине, должно синхронизироваться с обоими серверами или главным сервером с облаком. Как мне это сделать? Есть ли простой способ? Это должно быть сделано на моей локальной машине или на главном сервере?

Ответы [ 3 ]

3 голосов
/ 29 января 2012

Вы можете добавить несколько URL на один пульт.Что вам нужно сделать, это на локальном компьютере сначала создать пульт, соответствующий серверу gitorious:

git remote add -m master remotename ssh://gitorious-server/path

Вам нужно будет повторно добавить URL сервера gitorious в качестве явного push-запроса.URL:

git remote set-url --add --push remotename ssh://gitorious-server/path

и затем сделайте то же самое для облачного сервера:

git remote set-url --add --push remotename ssh://cloud-server/path

Это должно настроить конфигурацию, при которой каждый раз при локальном выполнении git push ваши изменения будуттолкнул на оба сервера.Но когда вы запускаете git pull (или git fetch), он будет извлекаться только с сервера.Это должно быть все, что нужно, чтобы серверы оставались синхронизированными.

Если вы когда-либо отправляете на любой сервер только с этого конкретного локального компьютера, то это все, что вам нужно.Но если вы перешли на один или другой сервер с любого другого компьютера, вам нужно будет выполнить одинаковую настройку на каждом из этих компьютеров.Если компьютеров достаточно, чтобы это было громоздким, или если у других людей есть доступ на запись к двум репозиториям, и вы не совсем доверяете им, чтобы получить правильную конфигурацию, вам, вероятно, лучше сделать что-то на стороне сервера.Это будет метод перехвата после получения, который manojlds упомянул .Для ясности, если вы используете метод пост-получения, не используйте дистанционный метод с двумя URL-адресами, описанный в предыдущей части моего поста.

1 голос
/ 29 января 2012

Идеальным способом было бы установить post-receive хук на вашем репо, который подталкивает к вашему облачному репо.

0 голосов
/ 29 января 2012

Самый простой способ - написать функцию bash и применить ее в вашем ~/.profile или ~/.bashrc или ~/.bash_profile (при условии Unix) примере:

function gitpushall {
   git push -u origin master
   git push -u foo master
}

Затем выполните source .profile, чтобы применитьчто на ваш логин и запустите gitpushall

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...