2011-03-07 6 views
2

저는 Github를 백업 또는 중앙 저장소로 사용하고 개발 및 테스트를 로컬에서 수행하는 데 익숙합니다.Git remote for testing

이제 원격 테스트 머신이 있고 리모컨으로 로컬 커밋을 푸시하여 원격 작업 디렉토리가 업데이트되어 내용에 대한 테스트를 실행할 수 있기를 원합니다.

1) 원격 설정을위한 지침 중 대부분은 --bare init을 사용하는 것입니다. 내가 아는 한, 이것은 리모컨이 작업 디렉토리가없고 푸시를 수락한다는 것을 의미합니다. 리모컨을 설정하지 않고 - 내가 시도하고 밀 때 오류가 발생합니다. 위의 워크 플로우를 어떻게 수행 할 수 있습니까?

2)이 워크 플로우는 좋은 생각입니까? 맨손으로 repo 외에도 원격 시스템에 테스트 레포를 설치해야합니까? 나는 발달에서 맨손으로 repo에 나의 푸시를 만든다, 그리고, 내가 시험 할 준비가되어있을 때, 나는 맨발의 repo에서 테스트 repo로 당긴다.

레일즈 프로젝트와 관련하여 질문하겠습니다. 그렇지만 내가 왜 그런지 알 수 없기 때문에이 질문에 태그를 지정하지 않았습니다.

답변

4

푸시하기위한 기본 저장소와 테스트가 실행될 곳에서 가져올 두 번째 리포지토리를 사용하는 것이 좋습니다. 이해하기 쉽고 테스트 환경을 긁어서 다시 작성하기로 결정할 때 조심할 필요가 없습니다. 동일한 서버에있는 경우 테스트 레포는 중앙 서버에 대해 '대체'를 설정할 수 있으므로 개체는 두 번 저장되지 않습니다 (git clone --shared을 사용하여 생성).

이 설정으로도 쉽게 테스트를 자동으로 실행할 수 있습니다. 중앙 저장소에 사후 수신 또는 사후 업데이트 훅을 설치하면 테스트가 실행됩니다. git 소스에서 필요에 맞게 조정할 수있는 contrib/continuous의 기성 구현도 있습니다.

작업 디렉토리가있는 푸시 저장소를 설정할 수 없다는 것이 아닙니다. Git은 푸시 중에 업데이트하는 법을 모르고 나중에 수행하는 방법을 모르기 때문에 체크 아웃 된 분기로 푸시하도록 허용하지 않지만 '분리 된 헤드'를 사용하여 해결할 수 있습니다. 그러나 이는 매우 혼란스럽고 테스트 환경을 재구성하기로 결정할 때 실수로 중요한 데이터를 제거 할 위험이 있습니다.

0

프로젝트에서 우리가 수행하는 방식은 모든 테스트 서버 (스테이징, 테스트, qa)에 대해 별도의 분기를 갖는 것입니다. 서버 중 일부에 변경 사항을 적용하려면 해당 서버의 특정 분기에 병합 한 다음 Capistrano를 사용하여 배포합니다.

1

대부분의 경우 비 베어 저장소로 푸시하고 싶지 않습니다. 그 이유는 푸시하는 것만으로 작업 내역을 업데이트하지만 작업 디렉토리는 업데이트하지 않기 때문입니다. 이 내용은 git FAQ에 설명되어 있습니다.

그래, 두 번째 제안은 갈 길입니다. 심지어 post-update hook을 사용하여 테스트 저장소를 자동으로 업데이트 할 수도 있습니다.