Gitosis (Debian Lenny)를 사용하여 다른 원격 저장소/위치로 푸시 할 수있는 웹 응용 프로그램을 개발 중이므로 "출혈 가장자리 ","릴리스 후보자 ", & 미러링 된 실제 웹 디렉토리 및 코드베이스가있는"프로덕션 "버전의 응용 프로그램. 나는 각 디렉토리에 응용 프로그램의 한 지점을 갖고 싶어한다. 그래서 한 저장소, 세 "라이브"버전.원격 서버에 푸시 된 분기를 기반으로 다양한 웹 폴더를 업데이트하는 Git 후크
나는 힘내에있어서 새로운 편이므로 아마도 더 나은 해결책이있다. 그러나 지금까지는 내가 찾지 못한 가지에 갈고리를 부착하는 방법을 찾고있다. 어떤 분기가 커밋되고 있는지 필터링합니다.
내 질문은 커밋 된 분기를 확인하고 해당 분기를 기반으로하는 디렉터리에 대한 변수를 설정하며 코드 기반을 즉시 액세스 할 수있는 해당 디렉터리에 복사하는 포스트 업데이트 훅을 설정하는 방법에 관한 것입니다. HTTP?
git rev-list --branches --pretty=oneline --max-count=1
는 같은 반환합니다
cc5112ba59bc82f2e847ac264317c062ce80f69f test commit
을하지만 난 "실험"또는 "마스터"같은 분기 자체의 이름이 필요합니다.
1) 문자열로 단지 (예 : "마스터"커밋 지점, "실험")의 이름을 가져옵니다
2) 사용 :
그래서 기본적으로 내가 좋아하는 뭔가를 찾고 있어요 배쉬 경우 같은
3) 실행 뭔가 사용하는 어떤 디렉토리 선언 "자식 아카이브 --format = 타르 HEAD | (CD를 $ 오시는 & & 타르 XF를 -)"위치가 케이스에서 반환 된 것입니다.
는 내가 다음에 가까워지고 있다고 생각하지만, 지점 이름을 반환하지만 대신 메시지를 저 지르지 않은 그것을 실현 :
#!/bin/sh
# Get substr from "sha1[space]commit-msg"
BRANCH=$(git rev-list --pretty=oneline --branches --max-count=1 | awk '{split($0,array," ")} END{print array[2]}')
case $BRANCH in
"experimental")
dir="/home/APP_NAME/experimental"
;;
"master")
dir="/home/APP_NAME/production"
;;
esac
# move to location and copy files
git archive --format=tar HEAD | (cd $loc && tar xf -)
내가 깨닫지 않았다 난 항상 같은 지점을 넣어 경우 커밋의 첫 번째 부분은 이와 같은 것을 성취 할 수 있지만 실제로 그것에 대해 걱정하고 싶지는 않습니다.
도움을 주시면 감사하겠습니다. 미리 감사드립니다!
git symbolic-ref HEAD
# or
git rev-parse HEAD
하는 당신에게 :