2012-09-19 3 views
1

Git과 올바른 웹 배포 워크 플로를 더 잘 이해할 수 있도록 다른 벽을 때 리고 있습니다. 나는 서버 관련 소프트웨어 및 유닉스 명령에 관해서는 초보자이므로 대답 할 때 명심하십시오. 유사한 주제에 관해 많은 질문이 제기되었지만, 포스트 리시버 (post-receive hook)를 사용하여 원격 저장소에 대한 특정 푸시 및 병합에 대해서는 아무 것도 발견하지 못했습니다.원격 서버의 리포지토리 및 수신 후크

배포를 위해 3 단계를 설정했습니다.

생산 (원격 서버 내가 베어 저장소를 가정) 준비
^
(원격 서버 베어 저장소)
^
개발 (로컬 컴퓨터)

나는 힘내을 내 로컬 및 준비에서 실행해야 환경. 스테이징 서버에서 수신 후 연결을 설정했습니다. 이것은 지금까지는 훌륭하게 작동하는 것으로 보이지만이 훅을 통해 스테이징 서버에서 볼 수있는 브랜치를 밀어 낼 수는없는 것 같습니다. 스테이징 서버는 마스터 분기 상태의 페이지 만 제공합니다. 이것은 아마도 예상 된 동작 일 것입니다.

준비 서버에서이 훅을 사용해야합니까? 변경 사항을 실제로 적용 할 수있는 유일한 방법은 내 로컬 시스템의 마스터에 먼저 병합 한 다음이를 스테이징으로 밀어 넣는 것입니다. 변경이 필요한 경우에는 제대로 보이지 않습니다. 로컬에서 병합을 취소해야합니까?

베어 리포지토리와 포스트 수신 후크가 프로덕션 서버에서 훌륭하게 작동 할 것입니다. 왜냐하면 실제로는 하나의 상태 만 가져야하기 때문입니다.

이들은 모두 정상적인 동작 일 수 있으며 워크 플로가 올바르지 않을 수 있습니다. 이 또는 지침에 대한 도움을 주시면 감사하겠습니다. 나는 이것을 조사했고 명확한 문서를 찾지 못했습니다.

답변

1

당신은 Staging 후받을 훅을, 당신은 항상 master 원격 지사에 당신이 원하는 지점 밀어 수 있습니다 (즉, Staging 항상 master, 기간이 될 것입니다)를 통제없는 경우 :

git push --force Staging my-funky-branch:master 

주를이 이와 같이 원격 master 브랜치를 재정의하면 누구든지 pull 또는 fetch 인 사람은 누구나 Staging에서 문제가 발생합니다.

Stagingmaster을 추적하고 해당 분기에 대한 모든 변경 사항을 병합 할 수있는 특수 로컬 분기를 만들 수도 있습니다. 당신이 제어가있는 경우 후크를 포스트 - 수신

git branch --set-upstream staging-master Staging/master 
git checkout staging-master 
git merge --no-ff my-funky-branch 
git push 

, 당신은 자동으로 밀어 분기를 제공하기 위해 this 같은 것을 사용할 수 있습니다.

+0

내가 제공 한 옵션을 살펴볼 수 있도록 포스트 리시버 훅을 제어하고 액세스 할 수 있습니다. 나는 post-recieve가 기본적으로 어떻게 작동하는지 감각이 있었다. 하나의 질문. 스테이징 서버에서 포스트 리시브 훅 (post-recieve hook)이있는 베어 메지 저장소 (bare repository)를 사용해야할까요? 아니면이 일에 대해 다르게해야할까요? – MAZUMA

+1

서버 (웹 루트 외부)와'checkout -f '를 사용하여 작업 디렉토리 (웹 루트 내부)를 완전히 분리합니다. – ellotheth

관련 문제