2014-01-09 1 views
3

내가 현재 읽고 포스트받을 후크가 this article의 지침을 따라 데 훅을 포스트 - 수신 : 이것은 잘 작동힘내 :에서 배포 디렉터리 만

#!/bin/sh 
git --work-tree=/home/user/example.com --git-dir=/home/user/example.com.git checkout -f 

- 모든 파일과 디렉토리가 점점을 배치. 그러나 example.com.git (단지 내가 Hammer 사용하고 있습니다.) 내의 Build 폴더에서 파일을 배포하고 싶습니다. 그래서 모든 개발 파일을 사용할 수 있고 라이브 서버에서 볼 수있는 것은 아닙니다.

질문 : 위의 Git 명령을 변경/추가하여 Build 디렉토리에있는 항목 만 체크 아웃/배포합니까?

업데이트 : 의견에 대한 토론 후 필자는 내 경우에 적용됩니다. 모든 수평 스크롤 바를 사용하지 않고 들어갈 수 있도록

#!/bin/sh 
git --work-tree=/home/user/example.com --git-dir=/home/user/example.com.git checkout -f master -- Build/ 
cd /home/user/example.com 
cp -rRp Build/. . 
rm -rf Build 
+0

원하지 않는 파일로 안으로 들지 마십시오. 너의 각자 응답을 가진? Build 이외의 모든 것이 여전히있을 것입니다. 그렇지 않습니다. 나는 @ yanhan의 대답 (git checkout의 arg를 사용하는 것)이 더 좋다고 생각한다. –

답변

4

나는 각각 WTREPO--work-tree--git-dir에 공급되는 값을 생략합니다.

일반적인 형태가되어야합니다 :

#!/bin/sh 
git --work-tree=WT --git-dir=REPO checkout -f -- paths 

라이브 서버에 배포되고있는 WT 디렉토리에서 가정, 당신은 단지 저장소에 Build 폴더를 체크 아웃합니다. 이

#!/bin/sh 
git --work-tree=WT --git-dir=REPO checkout -f -- Build 

는 일반적으로, 당신은 자식 저장소에있는 하나 개 이상의 파일과 함께 paths 부분을 대체 할 수됩니다. 이들은 repo에 배치되는 방법에 따라 상대 경로로 지정됩니다. 당신의 자식의 repo는 다음과 같습니다 그렇다면 :

FolderOne 
|- FolderTwo 
| |- FileOne 
|- FolderThree 

FolderFour 
|- FileFive 

그리고 당신은 FileOne 모든 것을 FolderFour를 체크 아웃하려면, 당신은해야한다 :

git --work-tree=WT --git-dir=REPO checkout -f -- FolderOne/FolderTwo/FileOne FolderFour 

는 업데이트 :

이 시간 이후되었습니다 Git hook을 다루었지만, stdin과 argv와 같은 세부 사항 이외에는 아무것도 넣을 수 없다고 생각합니다.

그래서 Build 폴더에 모든 것을 확인하지만 Build 폴더 자체, 당신은이 같은 뭔가를 할 수 없습니다에 대한 사후받을 훅 :

git --work-tree=WT --git-dir=REPO checkout -f -- Build/ 
cd WT 
cp -r Build/* . 
rmdir Build 

그래서 우리가 먼저 WTBuild 디렉토리를 체크 아웃 예배 규칙서. 그런 다음 WT 디렉토리에 cd을 입력하고 cp -r Build/* .을 사용하여 Build 디렉토리에서 모든 것을 복사합니다. .WT 디렉토리의 현재 디렉토리를 나타내며 단지 cd을 입력합니다. 완료되면 이제 비어있는 Build 디렉토리가 제거됩니다.

따라서 Build 디렉토리의 모든 것이 Build 디렉토리가없는 WT 디렉토리로 체크 아웃됩니다. 물론 WTREPO을 각각 작업 트리와 git 저장소에 대한 실제 경로로 대체해야합니다.

도움이 되길 바랍니다

+0

이것은 작동합니다. Build 폴더 안에 모든 것을 포함하고 싶지만 폴더 자체는 포함하고 싶지는 않습니다. Build/*를 사용해 보았지만 그걸로 아무런 행운이 없었습니다. – Eystein

+0

그런 경우에, 나는 당신이'cp -r REPO/Build/* WorkTree' 라인을 따라 무언가를 할 수 있다고 생각한다. – yanhan

+0

나 한테 말해 줄 수 있니? Git에 익숙하지 않습니다. 내 자신의 파일 경로를 사용하여이 변형을 시도했지만 아무런 결과가 없습니다. – Eystein

관련 문제