웹 호스트에서 "git push"업데이트 파일을 만드는 방법은 무엇입니까?


13

공유 호스팅에서 동일한 웹 호스팅 서비스로 호스팅되는 사이트가 몇 군데 있습니다. 내 웹 호스트는 Git을 지원하며 SSH 액세스 권한이 있으며 랩톱에도 Git 설정이 있습니다.

"git push origin master"를 수행 할 때 웹 서버의 파일을 자동으로 업데이트하고 이전 커밋 파일의 백업을 저장하여 원하는 경우 쉽게 롤백 할 수 있도록 만들고 싶습니다. 이게 가능해?


궁금합니다. 호스팅 제공 업체는 누구입니까?
사용자

왜 "이전 커밋 파일의 백업"을 원하십니까? 롤백하려면 이전 커밋을 푸시하면됩니다.
sleske

답변:


12

이것은 Git을 사용하여 웹 사이트 관리 에서 요약 됩니다.

프로세스의 핵심은 서버 측 후크 '포스트 수신'입니다 ( Git-Git 후크 사용자 정의githooks 매뉴얼 페이지의 git 후크에 대한 자세한 내용 참조 ). 이 후크는 서버가 모든 데이터를 수신 한 후에 실행됩니다.

서버가 데이터를 수신하면 서버는 git checkout -f -f 옵션을 실행 하여 로컬 차이가 있더라도 헤드에 체크 아웃합니다.

#!/bin/sh
GIT_WORK_TREE=/var/www/www.example.org git checkout -f

hooks/디렉토리에 post-receive실행 파일을 넣으십시오 . 물론 경로는 웹 서버 파일이있는 위치로 변경됩니다 (이를 사용 GIT_WORK_TREE하면 환경 변수를 설정하여 서버에서 도트 파일과 자식 설정을 저글링 할 필요가 없습니다).

롤백하려면 각 릴리스에 태그를 지정해야합니다 (이는 커밋 후 후크의 일부로 수행 될 수도 있음). 릴리스에 태그를 지정하면 롤백 할 스팟을 쉽게 식별 할 수 있지만 서버에 로그인하고 해당 태그를 체크 아웃해야합니다.


이것은 git을 배포 도구로 사용한다는 것을 의미합니다. 실제로는 의도하지 않은 것입니다. 작동 할 수는 있지만 수많은 제한이 있습니다 (전체 저장소를 다운로드하거나 스크립트를 호출하거나 파일 권한을 관리 할 수있는 방법이 없으며 물건을 풀 수있는 방법이 없습니다 ...). 적절한 배포 도구를 사용하는 것이 좋습니다.
sleske

@sleske 당신이 원하는 모든 것을 post-receive넣을 수있는 스크립트 일뿐입니다.
Mario

@Mario : 예, 가능합니다. 즉, 자체 배포 솔루션을 수신 후 후크로 효과적으로 구현하고 있습니다. 기존 솔루션을 사용하면 여전히 이점이 있지만 간혹 롤업이 가장 좋을 수도 있습니다.
sleske

웹 폴더에 .git 파일이 포함되지 않도록 중간 폴더에 체크 아웃하고 웹 폴더에서 중간 폴더로 링크 할 수도 있습니다.
벤트

0

푸시하려는 저장소의 작업 트리를 업데이트하는 가장 간단한 방법 git config receive.denyCurrentBranch updateInstead 은 수신자 측에서 설정 하는 것입니다. https://git-scm.com/docs/git-config/#git-config-receivedenyCurrentBranch를 참조 하십시오

포스트 커밋 후크가있는 Ryan의 대답은 다른 위치를 체크 아웃 할 수 있다는 점에서 더 좋습니다 (웹 폴더에 .git을 원하지 않을 것입니다). 그러나이 수준에서는 의견에서 sleske가 말한 것처럼 기존 배포 도구를 사용하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.