Przepływ pracy na serwerze produkcyjnym / pomostowym Git

108

Obecnie moja witryna (serwer produkcyjny) ma już dużo kodu. A teraz chcę zacząć używać Git do moich projektów i skonfigurować serwer przejściowy dla mojego zespołu. Czy ktoś może mi doradzić?

Oto obraz w mojej głowie:

        Production        - Production server which already have codes
            ↑             
         Staging          - New staging server, will install Trac too
         ↗↙ ↖↘          
  Developer1  Developer2  - Local development 

Moje pytanie brzmi, jak mam zacząć?

Oto kilka kroków, które mam na myśli:

  1. zrobić na git initserwerze produkcyjnym (czy to jest bezpieczne?)
  2. clone repozytorium z produkcji na serwer pomostowy
  3. programiści clonerepozytorium z przemieszczania na komputer lokalny
  4. push pliki na serwer pomostowy po zakończeniu zmiany
  5. gdy inscenizacja jest gotowa, pushwszystko do produkcji

Czy ten przepływ pracy ma sens, czy jest na to lepszy sposób?

A jeśli chcę zmienić tylko jeden plik?

Czy pochodzenie / mistrz ma z tym coś wspólnego w tym procesie? Kto jest źródłem? czy będę miał wiele źródeł?

Ponadto, kiedy programista powinien użyć branchw tym przypadku?

kayue
źródło

Odpowiedzi:

59

Lepiej jest używać gałęzi głównej tylko dla gałęzi produkcyjnej i deweloperskiej dla przejściówki. Każdy programista powinien utworzyć oddział lokalny, aby dodać nowe funkcje, a następnie połączyć się z gałęzią deweloperską. Jeśli jesteś nowy w git, spróbuj użyć - http://github.com/nvie/gitflow Jest też dobre zdjęcie opisujące model gałęzi git - http://nvie.com/posts/a-successful-git- model rozgałęzienia /

pluskwa.
źródło
To jest lepsza odpowiedź. Nie byłem zbyt zaznajomiony z koncepcją rozgałęziania Git.
kayue
@pluskwa. Czy masz link do jakiegoś zasobu wyjaśniającego gałąź develop -> push to staging system i master branch -> push to production server bardziej szczegółowo? Wspaniały artykuł Udany model rozgałęziania Git nie wspomina o tej części, nawet jeśli wspomina o bardzo dobrych koncepcjach rozgałęziania i wersjonowania.
Edgar Alloro
19

Twoja sugestia wygląda dobrze, ale nie pozwoliłbym programistom przesyłać bezpośrednio na serwer pomostowy. Zamiast tego integrator powinien dokładnie przejrzeć gałęzie i włączyć je do gałęzi głównej (lub gałęzi programistycznej, jeśli używasz modelu przepływu git, zgodnie z sugestią bUg). * Ta sama osoba przesyła dane do serwera pomostowego.

* Integrator : „ Dość centralna osoba działająca jako integrator w projekcie grupowym otrzymuje zmiany wprowadzone przez innych, przegląda je i integruje oraz publikuje wyniki do wykorzystania przez innych…


1. wykonaj git init na serwerze produkcyjnym (czy to jest bezpieczne?)

Tak, jest to bezpieczne, ale oczywiście musisz ustawić bardzo restrykcyjne uprawnienia dla tego repozytorium. Prawdopodobnie zacząłbym od curlzapisania całej strony internetowej na lokalnym dysku, jeśli jeszcze go nie mam.

2. sklonować repozytorium z produkcji na serwer przejściowy

Prawdopodobnie powinieneś mieć „centralne” repozytorium niezależne od serwera produkcyjnego i pomostowego. W razie potrzeby można go sklonować i przesunąć.

3. programiści klonują repozytorium z przemieszczania na komputer lokalny

4. przesyłać pliki na serwer pomostowy po zakończeniu zmiany

5. kiedy inscenizacja jest gotowa, wszystko należy skierować do produkcji

Zastąp „staging” słowem „central” i myślę, że wszystko w porządku, ale większym problemem jest sposób pracy z gałęziami i scalaniem, jak wskazuje bUg.

Felixyz
źródło
10
1: Aby repozytorium Git było bezpieczne w środowisku produkcyjnym, upewnij się, że dodajesz plik .htaccess z „Deny All” w środku.
kayue
2
2: „Centralne” repozytorium Felixyz odnosi się do samego repozytorium. Użyj polecenia --bare, aby utworzyć nagie repozytorium.
kayue
1
@keyue 1: Nawet lepiej, dodać RedirectMatch 404 /\.gitdo swojej produkcji .htaccess chronić swoje .gitignore , .gitattributes i .git folder.
Leo