Git : 저장소에서 자동 가져 오기?


90

원격 저장소에서 업데이트를 수신하고 무언가 변경 될 때마다 가져 오도록 git을 설정하는 방법이 있습니까? 사용 사례는 git을 사용하여 웹 앱을 배포하고 싶지만 (배포 된 애플리케이션의 버전 제어 권한을 얻습니다) 웹 서버가 아닌 Github에 "중앙"git 저장소를 배치하고 싶습니다 (Github의 인터페이스는 정말 멋집니다). .

이 일을 한 사람이 있습니까? Heroku는 어떻게합니까? 내 Google-fu가 관련 결과를 제공하지 못합니다.

답변:


48

Git에는 다른 작업 후에 실행할 수있는 작업 인 "후크"가 있습니다. 당신이 찾고있는 것은 "post-receive hook"입니다. github 관리자에서 누군가가 리포지토리에 푸시 할 때마다 히트 할 수신 후 URL을 설정할 수 있습니다 (방금 푸시 된 데이터가 포함 된 페이로드 포함).

그만한 가치가있는 것은 자동 풀이 좋은 생각이 아니라고 생각합니다. 문제가 브랜치에 푸시되면 어떻게 될까요? 나는 capistrano그런 것들을 위해 (또는 동등한) 도구를 사용할 것입니다.


11
내 계획된 사용 사례는 개발 "테스트 및 문제 해결"단계를위한 별도의 리포지토리 / 브랜치를 갖는 것이었고, 모든 것이 제대로 작동하는지 확인한 후에 만 ​​푸시하는 특별 "푸시 투 프로덕션"리포지토리를 갖는 것이 었습니다. 저는 기본적으로 Git을 사용하여 rsync로 할 수 있습니다. 단, 배포되는 모든 버전의 로그를 유지하고 이전 버전으로 쉽게 롤백 할 수 있습니다. 카피 스트라 노와 같은 하드 코어에 비해 장점은 (현재로서는) 정말 작은 프로젝트에 대해 완전히 새로운 도구를 배울 필요가 없다는 것입니다.
Li Haoyi

웹 후크 인증은 추가적인 안전 문제와 복잡성을 추가하므로 풀 기반 솔루션에는 여전히 장점이 있습니다. 태그를 사용하여 릴리스 버전 제어를 수행하여 우발적 인 배포를 방지 할 수 있습니다.
lz96

21

유닉스 계열에서는 컴퓨터에서 "git pull"(매일 또는 매주 또는 무엇이든)을 호출하는 크론 작업을 만들 수 있습니다. Windows에서는 작업 스케줄러 또는 "AT"명령을 사용하여 동일한 작업을 수행 할 수 있습니다.


3
Git을 사용하는 적절한 방법이 아닙니다.
2015 년

26
@deepdive 왜 안돼? 집에 약간의 Rasperry Pi가 있고 사용 가능한 고정 IP가 없다고 상상해보십시오. cron 또는 runwhen 작업을 실행하는 다른 옵션은 무엇입니까?
카이저

2
좋은 생각이 아닙니다. 그는 변경 사항이 푸시 직후에 적용되기를 원합니다.
boi_echos jul.

10
OP는 특히 원격 저장소에서 업데이트수신 하고 무언가 변경 될 때마다 가져 오는 방법을 요청하고 있습니다. 이 솔루션은 리포지토리에서 자주 가져 오기 때문에 효과가 있으려면 간격이 매우 짧아야하므로 많은 중복 pull 요청이 발생합니다.
보아스

3
크론 탭을 변경하지 않고이를 수행하는 빠른 방법 : while true; do git pull; sleep 10; done. 이것은 git pull매 10 초마다 할 것입니다 ...
JakeD

3

Jenkins 또는 Bamboo와 같은 지속적인 통합 프로그램은 커밋을 감지하고 빌드, 테스트, 패키지 및 배포와 같은 작업을 트리거 할 수 있습니다. 그들은 당신이 원하는 것을 수행하지만 의존성이 무겁고 구성하기가 어려우며 결국 git 저장소에 대한 주기적 검사를 사용할 수 있습니다.


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