2016-12-19 8 views
0

Мы в настоящее время команда из 3 разработчиков, работающая в проекте, используя gitlab.comПолучить входящую ветвь от толчка в крюке Гита

У нас есть два сервера, один для производства и один для тестирования, как работающие на разных каплях ,

После того как мы закончили с нашими изменениями, мы помещаем на сервер тестирования, где мы имеем это Гит после приема крюка (это чистый репозиторий):

#!/bin/sh 
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f 

Мы используем ветку под названием «тестирование» (который проверяется на сервере тестирования), поэтому все работает нормально. После того, как все будет в порядке, мы объединим это в мастер, а затем подталкиваем к производству. Проблема здесь заключается в том, что иногда может возникнуть необходимость создания ветки для исправления ошибки в производстве, но мы не хотим загружать текущую работу в нашу тестовую ветку, и мы также хотим протестировать это исправление филиал на нашем тестовом сервере.

Именно поэтому я решил, что мы могли бы просто проверить входящую ветвь на тестовом сервере, чтобы каждый мог протестировать свой код на реальном сервере, не получив проверку на тестирование. Это можно сделать? Я попробовал googling git environment var для входящей ветки, которая сделала бы ее тривиальной оттуда, но не повезло. Я знаю, что мы все могли бы просто нажать и вручную проверить ветку на тестовом сервере, но это решение не привлекательно. Было бы более эффективно делать это с помощью git push и позволить серверу справляться с остальными!

Это, безусловно, не лучший способ для развертывания с использованием Git, поэтому я все уши для предложений!

+0

Итак, вы хотите, чтобы серверы тестирования и производства имели ветвь исправления, но не выталкивали исправление с сервера тестирования на производство? –

+0

@ Marina-MSFT да, но не только ветка исправления, но и любая ветка. Моя главная цель - видеть, что любая ветка на нашем единственном сервере тестирования делает только push. – user2430929

ответ

0

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

Любой push состоит из ряда commits. commitsможет быть на одной ветке, но они также могут быть на нескольких ветвях. Вы можете даже нажать фиксации, которые не на с именем.

Таким образом, вопрос в этом смысле не имеет смысла.

Во-вторых, почему вы хотите, чтобы ваш производственный сервер не видел не master веток? Если на производственном сервере выведен филиал master, то ветвь hotfix не будет развернута автоматически, только потому, что она записана в каталоге .git/. Таким образом, на самом деле мало вреда, что можно сделать, нажав неиспользуемую ветвь.

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

git push deployement master 
+0

Эй, там. Наш производственный сервер в порядке, нет необходимости иметь другую ветку там, кроме мастера. Моя проблема связана с сервером тестирования, потому что все мы должны тестировать наши филиалы в живой среде. – user2430929

+0

Предположим, что у разработчикаA есть новая функция, называемая featureA, и хочет протестировать ее на сервере тестирования, developerB находится в той же ситуации с featureB. Каким будет лучший способ проверить их соответствующие филиалы на сервере тестирования, чтобы они могли увидеть их изменения? – user2430929

0

Существует способ, вы можете автоматически нажимать свою основную ветку на сервер тестирования на производство. Вы должны содержать следующие параметры: <oldrev> <newrev> <refname>

Подробнее см. automatically push to another repo.

+0

@ user2430929, проделал путь в ссылке, чтобы помочь вам решить проблему? –

 Смежные вопросы

  • Нет связанных вопросов^_^