2014-02-16 11 views
3

이것은 바보 같은 질문처럼 보일 수 있지만 GIT를 상당히 잘 이해하고있는 것처럼 느껴지지만 내 개발 환경을 설정하지 못하는 것 같습니다. 싶습니다. 나는 정말 간단한 것을 놓치고있다. 아니면 완전히 잘못 될 것이다. :)원격으로 테스트 할 때 git 개발 환경을 설정하는 방법

내 서버에서 맨손으로 repo를 초기화하고, 내 로컬 컴퓨터에 복제하고, 내 파일을 커밋하고, 원본으로 푸시했다. 그런 다음 현지에서 세 개의 지사 (마스터, 릴리스, 개발)를 만들고 모든 출처를 게시했습니다. 개발 지점에서 여러 명의 개발자를 끌어낼 계획인데 마스터 브랜치로 밀어 넣을 수는 없지만 다른 질문에는 더 나을 수 있습니다.

이제 파일을 로컬로 변경 한 다음 테스트 서버에 업로드하고 웹 브라우저를 통해 테스트 서버를 확인합니다. 나는 그들이 컴퓨터를 웹 서버로 구성하고 PHP와 MySQL을 설치하지 않는 한 대부분의 사람들이 자신의 작업을 테스트하는 방법이라고 상상해야 할 것이다. 변경 사항이 만족 스러우면 원본보고로 푸시하고 모든 것이 올바르게 작동합니다.

테스트 서버를 내 로컬 컴퓨터와 동기화 상태로 유지하는 데 어려움이 있습니다. 필자는 원격 테스트 디렉토리에서 repo를 설정하려고 시도했으며 로컬 파일과 테스트 서버의 파일을 동기화하기 위해 테스트 repo로 푸시 할 수 있기를 바라고 로컬 git repo에 두 번째 원격을 추가했습니다. 하지만 두 개의 리모컨을 가지고 로컬 컴퓨터와 동기화하는 방법을 알아낼 수는 없습니다.

새 로컬 지사를 만들고 체크 아웃하여 새로운 지형지 물에 대한 작업을 시작한 다음 지사를 원격 테스트 용으로 푸시하면 테스트 용 리모컨의 헤드가 여전히 마스터이며 새 지형지 물 분기가 아닙니다. 따라서 지형지 물 지점을 로컬로 변경하려고합니다. 그러나 코다를 통해 테스트 서버에 변경 사항을 게시하면 실제로 테스트 저장소의 마스터 분기에서 파일을 변경하고 있습니다. 로컬 스냅 샷과 테스트 스냅 샷을 동기화 할 수 없다면, 나는 킷 분기 기능을 최대한 활용하는 방법을 모릅니다.

로컬에서 개발하고 테스트하는 것이 정말 중요한 것입니까? 어떻게하면 원격으로 테스트해야 할 때 git을 사용하여 개발 환경을 설정합니까? 이 문제에 대해 완전히 다른 테스트 방법을 사용하고 있습니까? 여러 개의 리모컨을 가지고 있으며 테스트 서버에서 원격으로 동기화하여 로컬 파일의 인스턴스를 가질 수 있도록 푸시 된 최신 분기로 체크 아웃 할 수있는 방법이 있어야합니다. 도와주세요!

+0

시도 (https://www.kernel.org/pub/software/scm/git/docs/githooks.html) [자식 포스트는 커밋, 그러나 실행 파일로 표시하는 것을 잊지 않는다. ..이게 도움이되는지 아닌지 알려주세요. – hd1

+0

배포 용으로 Git을 사용하지 마십시오. 테스트를 위해 맨손이 아닌 레포로 이동하지 마십시오. * 분명히 * 로컬에서 개발을해야합니다 (예, 대부분의 PHP 개발자는 로컬 PHP/Apache/MySQL 인스턴스가 있습니다). 배포하려면 Capistrano와 같은 것을 사용하면 인생이 훨씬 쉬워집니다. – meagar

+0

"하지만 다른 질문에 더 좋을 수도 있습니다"->이 부분에서는 [프로덕션 지점으로의 변경 사항 병합을 피하는 방법] (http://stackoverflow.com/q/21794003/1796345)을 읽어보십시오. – gturri

답변

3

로컬로 테스트하는 것이 가장 좋습니다. 그렇게 빨리 반복 할 수 있습니다. 빠른 반복은 매우 중요합니다. git push와 원격 연결 대기 시간에 더 많은 시간을 투자하면 완전한 로컬 dev env를 설정하는 것보다 더 많은 비용이 들게됩니다.

어떤 방법 으로든 변경 사항을 원격으로 테스트해야합니다. 테스트 서버에서 포스트 수신 후크를 사용하여이를 수행 할 수 있습니다. 여기에 한 가지 방법이 있습니다. 테스트 서버에서

:

  1. 은 당신의 repo의 베어 클론을 생성합니다. 이 repo를 "테스트"라고합시다.
  2. 테스트에서 복제 및
  3. 가 새롭게 수신 지점에서 웹 사이트를 업데이트합니다 테스트 REPO에 후크를 포스트가 나타난다 만들기 브라우저에서 테스트 원격 웹 사이트로 설정

수신 후크 스크립트 :

#!/bin/sh 
while read oldrev newrev refname 
do 
    upgrade_sh=./upgrade.sh 
    if test -e $upgrade_sh; then 
     upgrade_sh=$(readlink $upgrade_sh || echo $upgrade_sh) 
     echo calling upgrade script: $upgrade_sh 
     $upgrade_sh $refname 
    else 
     echo NOT calling non-existent upgrade script: $upgrade_sh 
    fi 
done 

테스트의 .git/hooks에 넣고 실행 가능하게 만듭니다.

나는 보통 upgrade.sh 스크립트를 버전 관리하에 내 프로젝트 안에두고, hooks 디렉토리에서 심볼릭 링크를 생성합니다. 내가 정적 다시 생성해야 내 장고 웹 사이트에 예를 들어, 대부분의 경우

#!/bin/sh -e 
unset GIT_DIR 
git checkout -f $1 

당신이 이것보다 더 많은 일을 할 : 업그레이드 스크립트의 upgrade.sh 주요 임무는 밀려 지점에 배포 디렉토리를 다시 설정하는 것입니다 콘텐츠 및 신호를 Apache로 다시 시작합니다.

시작하는 데 도움이되기를 바랍니다. 에 테스트 실행을 추가