2013-04-10 2 views
2

웹 루트에 대한 체크 아웃을 수행하여 매번 업데이트 할 때 웹 사이트를 업데이트하는 방법을 알아 내려고합니다. 나는 stackoverflow를 검색하여 복제 방법에 대한 주제 만 찾았는데, 이는 내가 원한 것이 아닙니다. 지금까지 난 내 로컬 및 원격 REPOS을 설정하고 포스트받을 후크 한 :루트 폴더가없는 GIT 사후 수신 체크 아웃

내 문제는 프로젝트 루트 폴더는 체크 아웃에 포함되어
#!/bin/sh 
GIT_WORK_TREE=/path/to/website/httpdocs git checkout -f 

... 내가 원격으로 내용을 누르면 REPO, 나는 체크 아웃하는 동안

/path/to/website/httpdocs/index.php 

가 어떻게 프로젝트 루트 폴더를 생략 할 수 있습니다 데 달성하고 싶은 무엇

/path/to/website/httpdocs/project_root/index.php 

같은 끝낼?

+0

이 문제는 프로젝트 이름과 함께 루트 폴더를 자동으로 만드는 eclipse git plugin (egit)에 의해 발생한 것으로 보입니다. 나는 웹 루트로의 경로를'/ path/to/website/httpdocs'에서'/ path/to/website/httpdocs/project_root'로 바꿈으로써 해결했습니다. – choppingblock

답변

0

경우 :

  • /경로 /로/웹 사이트/httpdocs는
  • /경로 /로가/project_root는 자식의 repo하는 자식의 repo (즉이있는 .git 디렉토리)

git --git-dir=/path/to/project_root/.git --work-tree=/path/to/website/httpdocs checkout -f 

을하지만 당신은에 밀어하는 경우 :

그럼 당신은 당신의 post-receive 후크에서 사용할 수있는 project_root, 그것은 베어의 repo,이 경우, 루트 디렉토리 /project_root.git를 호출 할 필요가 오히려이며, post-receive 훅과 같습니다

어떤 경우
git --git-dir=/path/to/project_root.git --work-tree=/path/to/website/httpdocs checkout -f 

project_root가 자식의 루트해야합니다 repo.


OP choppingblockcomments :

이 문제가 자동으로 프로젝트의 이름을 가진 루트 폴더를 생성 이클립스 자식 플러그인 (EGit)에 의해 발생되는 것으로 보인다.
이제 경로를 webroot으로 변경하여 /path/to/website/httpdocs에서 /path/to/website/httpdocs/project_root으로 변경했습니다.

+0

repo는'path/to/website/git/myrepo.git' 로컬 Repo에서이 작업을 수행 중이지만 'path/to/website/httpdocs'(Repo가 아님) 체크 아웃을 원합니다. – choppingblock

+0

@choppingblock 다음 두 번째 수신 후크는 내가 언급 할 것입니다. 그냥해라. – VonC

+0

다른 곳에서 문제가 발생한 것으로 나타났습니다 (질문에 대한 의견 참조). 답변이 정확했기 때문에 허용으로 설정했습니다. – choppingblock

관련 문제