2016-12-19 2 views
0

Nous sommes actuellement une équipe de 3 développeurs travaillant dans un projet en utilisant gitlab.comObtenez branche d'entrée de pression dans un crochet Git

Nous avons deux serveurs, l'un pour la production et l'un pour les essais, à la fois en cours d'exécution sur les différentes gouttelettes .

Après nous avons terminé avec nos changements, nous poussons sur le serveur de test où nous avons ce crochet post-recevoir Git (c'est un dépôt nu):

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

Nous utilisons une branche nommée « testing » (qui est vérifié dans le serveur de test), donc tout fonctionne bien. Après tout est OK, nous fusionnons cela en maître et ensuite pousser à la production. Le problème ici est qu'il peut y avoir des cas où nous avons besoin de créer une branche pour corriger un bug en production mais nous ne voulons pas télécharger le travail en cours dans notre branche testing, et nous voulons aussi tester ce correctif branchez dans notre serveur de test. C'est pourquoi j'ai pensé que nous pouvions simplement vérifier la branche entrante dans le serveur de test, afin que tout le monde puisse tester son code sur un serveur en direct sans avoir toujours à faire vérifier la branche testing. Cela peut-il être fait? J'ai essayé de googler l'environnement git var pour la branche entrante ce qui rendrait trivial à partir de là mais n'a pas eu de chance. Je sais que nous pourrions tous simplement pousser et vérifier manuellement la branche dans le serveur de test, mais cette solution n'est pas attrayante. Il serait plus efficace de faire juste avec git push et laisser le serveur gérer le reste!

Ce n'est certainement pas le meilleur moyen de déploiement en utilisant Git, donc je suis tout ouïe pour des suggestions!

+0

Vous voulez donc que les tests et le serveur de production disposent tous les deux d'une branche de correctifs, mais pas de pousser le correctif du serveur de test à la production? –

+0

@ Marina-MSFT oui, mais pas seulement une branche de correctif, juste une branche. Mon but principal est de pouvoir voir n'importe quelle branche dans notre seul serveur de test faisant seulement pousser. – user2430929

Répondre

0

D'abord, il n'y a aucun moyen de obtenir la branche d'entrée d'une poussée, parce qu'il n'y a pas une telle chose comme une branche spécifique entrante associée à une poussée.

Tout push se compose d'un nombre de commits. Le commitspeut être être sur une seule branche, mais ils peuvent également être sur plusieurs branches. Vous pouvez même appuyer sur les validations qui ne se trouvent sur aucune branche nommée. Donc, la question n'a pas vraiment de sens à cet égard. Deuxièmement, pourquoi voulez-vous que votre serveur de production ne voit pas les branches non master? Si la branche master est extraite du serveur de production, la branche hotfix ne sera pas déployée automatiquement, simplement parce qu'elle est enregistrée dans le répertoire .git/. Il y a donc peu de mal à faire en poussant une branche inutilisée. Troisièmement, si vous êtes absolument certain de ne pas envoyer de branches inutilisées au système de déploiement (par exemple, parce que le serveur de déploiement appartient à un client qui ne doit pas voir le correctif avant de l'avoir payé), vous pouvez bien sûr pousser des branches spécifiques avec

git push deployement master 
+0

Salut. Notre serveur de production est bien, il n'y a pas besoin d'avoir une autre branche là-bas que le maître extrait. Mon problème est avec le serveur de test, car nous avons tous besoin de tester nos branches sur un environnement en direct. – user2430929

+0

Supposons que développeurA a une nouvelle fonctionnalité appelée featureA et veut le tester sur le serveur de test, le développeurB est dans la même situation avec featureB. Quel serait le meilleur moyen de vérifier leurs branches respectives sur le serveur de test pour qu'ils puissent voir leurs changements? – user2430929

0

De cette façon, vous pouvez pousser automatiquement votre branche principale dans le serveur de test en production. Vous devez contenir ces paramètres: <oldrev> <newrev> <refname>

Pour plus de détails, veuillez vous reporter à automatically push to another repo.

+0

@ user2430929, a fait le chemin dans le lien vous aider à résoudre le problème? –