2014-11-18 3 views
0

프로젝트에 변경 사항을 적용하려면 push-to-deploy 메소드를 사용하고 있습니다. 내가했던 방법은 다음과 같이이다 : myproject라는 /를 포함한 원격 위치 (예 :/var에/www /에서 myproject라는)에새 파일을 원격 저장소로 푸시하지 않겠습니다.

  1. 설정 현재 프로젝트에 대한 로컬 자식 저장소 커밋 파일
  2. 복사 전체 프로젝트 디렉토리. git directory
  3. 원격 서버에서이 프로젝트에 대해 git config receive.denyCurrentBranch false을 설정하십시오 (이 설정을 true로 설정하면 오류가 발생 함). dev에서 푸시 할 수 있습니다. 그렇지 않으면 오류 메시지가 나타납니다.
  4. 원격 서버의 업데이트 후크를 주로 git reset HEADgit checkout으로 설정합니다. 그러면 원격 디렉토리의 이전 버전을 새로 푸시 된 버전으로 덮어 씁니다.
  5. 새 원격 자식 디렉터리를 로컬에 추가하십시오.
  6. 원격 저장소에 변경 사항을 추가, 커밋 및 푸시합니다. 원격 프로젝트 파일은 최신 버전이어야합니다.

이 작동하고 파일에 대한 변경 내역은 원격 서버의 체크 아웃 된 분기에 나타납니다. 필자는 원격 저장소 하나를이 방법으로 만 보유하고 있습니다. 이전에는 맨발 저장소가 있었고 업데이트 후크를 사용하여 프로젝트를 라이브 디렉토리로 가져갔습니다 (리모콘에 2 개의 저장소가 생성되고 원격 저장소가 생성됨)

어쨌든이 기능이 작동하지 않는 곳은 로컬 개발 환경에서 새 파일을 만들고 변경 내용을 추가, 커밋 및 푸시합니다. 나는 어떤 오류도 내지 않는다. 또한, 다시 시도하면 모든 것이 최신이라고 알려줍니다. 그러나 새 파일이 원격 서버에 없습니다. 왜?

새 파일이 로컬 자식에게 커밋되지 않고 원격으로 푸시되거나 체크 아웃되지 않는지 확실하지 않습니다. 이것에 대한 이유가 있습니까? 어딘가에 몇 가지 옵션을 지정해야합니까? 내 지역의 repo에 개발에서 파일을 체크 아웃하려고하면

UPDATE는

괜찮아. 그래서 파일이 거기에 위탁 된 것 같습니다. 그래서 원격으로 밀고 나서 리셋/체크 아웃하는 사이의 어떤 점에서 나는 올바르게 설정하지 않았다.

+0

새 파일을 만들 때 dev 브랜치에 있어야 했습니까? 어쨌든 베어 레포를 사용하는 것이 좋습니다. 그것은 두 개의 repos를 포함하지 않습니다 : http://stackoverflow.com/a/15930178/6309. – VonC

답변

2

내 조언은 post-receive 후크의 조합으로 원격 서버에 단 하나의 bare repo를 사용하는 것입니다.

후크 모양을한다 : 나는이 문제를 추측 누락 된 파일에 대해

git --work-tree=/path/to/the/live/site checkout -f master 

은, 다른 지점에서 파일을 커밋 dev 말과 라이브 서버에 당신이 지점 master을 체크 아웃하는 것을입니다 이 파일은 존재하지 않습니다.

관련 문제