2011-12-16 7 views
10

현재 우리는 SVN을 사용하고 있습니다. 나는 GitHub를 사용하기를 원하지만 절대적인 요구 사항은 우리가 현재 가지고있는 것처럼 코드의 사전 검증 (premerge) 검증이 필요하다는 것이다. GitHub는 프리 커미 픽 (premergehooks)을 지원합니까?precommithooks를 지원합니까?

우리는 5 명의 개발자로 구성된 팀입니다. 우리는 모든 코드 (JavaScript)가 JSLint와 같은 유효성 검사를 통과해야한다는 데 합의했습니다. 자발적인 검증은 쉽게 잊혀지기 때문에 효과가 없다고 판명되었습니다. 다른 사람들이 사용할 수있게 된 코드가 JSLint (또는 이와 유사한 것)에 대해 유효성을 검증 할 수 있는지 어떻게 확신 할 수 있습니까?

+3

(자식! = GitHub의)이었다 – smitec

+4

내가 그 알고 나는 자식이 precommithooks를 지원하는지 알고있다. 그래서 git로 옮기는 것은 문제가되지 않지만 우리가 github을 사용할 수 없다면 그렇게하지 않을 것입니다. – coen

+0

git의 사전 커밋 (precommit) 훅이 컴퓨터에서 실행됩니다. 커밋을 중지하면 유효하지 않은 코드를 github에 밀어 넣을 기회가 없습니다 – smitec

답변

2

github이 사전 커밋 후크를 지원한다고 생각하지 않습니다. 그러나 git core는 않습니다. 로컬 gitub에 분기를 병합하기 전에 사전 커밋 훅을 로컬로 설정하거나 테스트로 적용 할 수 있습니다.

+0

우리에게는 코드의 유효성을 검사하지 않고 커밋 할 수 없기 때문에 합병 전에 테스트하는 것이 불행히도 해결책이되지 않는다. – coen

+0

아마 github에서 멀리 떨어져 있어야한다. 간단한 자식 서버를 설정하는 것은 어렵지 않으며 원하는 방식으로 정확히 후크를 설정할 수 있습니다. –

+0

git의 전체적인 요점은 커밋이 쉽게 일어나도록 허용하는 것입니다. 실제로 커밋은 로컬 시스템에서 발생하는 것입니다. 원격 서버에 아무런 훅 (hook)도 없기 때문에 로컬에서 쓰레기를 버리는 것을 막을 수 있습니다. 아마도 '커밋'에 대한 정의를 '병합'으로 변경해야할까요? 또는 사용자를 신뢰할 경우 모든 클라이언트 작업 복사본에 후크 사본을 넣으십시오. – bdonlan

2

아니요, GitHub는 사전 커밋 후크를 지원하지 않습니다. 어떻게 작동합니까? 귀하의 컴퓨터에 이 발생하면 실제로 GitHub에서 임의의 코드를 실행할 수있게 하시겠습니까?

+2

로컬로 작업하는 동안 병합해도 괜찮지 만 주 저장소와 병합하면 코드의 유효성을 검사해야합니다. 예를 들어 웹 훅으로이 작업을 수행 할 수 있다고 상상할 수 있습니다. – coen

+0

// 질문을 더 쉽게 이해할 수있는 방법을 설명 할 수 있을까요? 이것을 타파하는 많은 사람들이 SVN에 배경을 가질 것이라고 생각하십시오. –

2

당신은 자식에 대해 근본적인 것이 빠져 있다고 생각합니다. 중앙 집중식 모델이 아닙니다. (잘 확인하십시오. 일 수 있습니다. 그렇다면이 방법을 사용하면 github이 잘못된 접근 일 수 있습니다). 당신이 github의를 사용하는 경우,이 작업을 수행하는 올바른 방법은 다음과 같습니다

  1. 호스트 메인의 repo
  2. 자신의 포크를 각각 생성 개발자를 가지고 커밋과에 밀어 멀리 해킹 행복을하자 자신의 heart 내용물
  3. 기능을 사용할 준비가되었다고 생각하면 안정성을 확보하기 위해 스스로 확인하는 관리자 (관리자)에게 요청을 보냅니다. 그런 다음 변경 사항을 기본 저장소로 병합/리베이스합니다.

당연히 고양이를 피하는 데는 여러 가지 방법이 있습니다. 그러나 오픈 소스 공동체가 고용하는 "진짜 자식 (real git)"에 대해 이야기 할 때, 중앙 집중식 "체크 인 (check-it-in-it-it-it-it-it-it-it-it-it-it-it-it- 더 큰 프로젝트에 관해서.

+1

사실 나는 그렇습니다. 내가 완전히 빠뜨린 'pull request'원칙을 살펴 봐야한다. – coen

+0

지속적인 배포를 수행하는 경우 테스트가 실패 할 때마다 사용자가 배포 한 repo로 푸시하지 못하게하는 것이 좋습니다. – kranzky

+0

@kranzky 답장을 보내 주셔서 감사합니다. 비록이 답변의 요점을 놓치 셨습니다. –

3

나는이 문서가 자동화를위한 기초가 될 수있는 아주 좋은 흐름을 설명 생각 :

http://scottchacon.com/2011/08/31/github-flow.html

주요 아이디어는 위에서 언급 한 바와 같이 당신이 풀 요청을 사용하지만, 당신은 또한 서비스를 할 수 있다는 것입니다 github API를 사용하여 브랜치를 가져 오거나 가져 와서 요청을 만들고, 병합하고, 테스트하고, 유효성을 검사 한 다음 대상 분기로 푸시합니다.