Git에서 커밋 데이터를 확인하는 올바른 방법은 무엇입니까?


13

내 목표는 특정 요구 사항을 충족하지 않는 커밋 데이터를 확인한 다음 커밋이 생성되거나 원격 저장소로 푸시되는 것을 거부하는 것입니다.

사전 커미트 후크를 수행하는 문제는 사전 커미트 후크 파일을 수동으로 업데이트해야하는 많은 사람들에게 배치하기 어렵다는 것입니다. 또한 Git을 사용하면 배포가 쉽지만 .git 폴더에 하위 모듈을 가질 수 없습니다.

내가 보는 다른 옵션은 원격 측의 업데이트 후크라고 생각합니다.이 후크는 개발자가 푸시 한 각 커밋을 확인하고 커밋 중 하나라도 테스트에 실패하면 푸시를 거부합니다.

누구 든지이 문제에 대한 통찰력이 있습니까? 그렇다면 업데이트 훅 스크립트 예제를 제공 할 수 있습니까? 그것이 어떻게 작동하는지 조금 혼란 스럽습니다.


4
이것은 좋은 첫 번째 질문입니다.
데니스

답변:


7

먼저 정규화되지 않은 코드를 커밋하거나 다시 업스트림으로 푸시 / 게시하지 않을지 여부를 파악해야합니다.

제 생각에는 후자가 더 실현 가능합니다.

git와 같은 DVCS로. 모든 개발자가 로컬 리포지토리를 사용하는 방법을 실제로 제어하고 싶지는 않습니다. 그리고 당신은 그것을 실제로 통제 할 수 없습니다.

사전 커미트 후크는 관련된 모든 사람이 자발적으로 포용하는 경우 기본 유효성 검사 및 위생 처리로 잘 작동합니다. 우리는 실제로 회사에서 느슨하게 시행합니다. 그러나 항상로 건너 뛸 수 있습니다 git commit --no-verify.

반면에 서버 측 후크는 프로그래머의 로컬 워크 플로를 방해하지 않으며 프로젝트의 다른 사람이 특정 기준을 충족하는 코드만으로 작업을 수행하도록합니다. 일반적으로 이것은 사람들이 자동 검사를 구현할 때 찾는 것입니다.

이 자동 유효성 검사는 품질 관리를 대체하기위한 것이 아니며 일반적으로 코드 검토 또는 쌍 프로그래밍으로 달성됩니다.

github 에 익숙하다면 "pull request"가이 문제에 대한 또 다른 접근법이라는 것을 알 수있을 것입니다. 많은 오픈 소스 프로젝트와 회사는 지점 권한 제어 및 코드 검토를 위해 github의 풀 요청을 사용합니다. 그러나 인간과의 상호 작용이 필요하므로 원하는 것이 아닐 수도 있습니다.


1

이미 지적했듯이 기술적으로 가능하지만 클라이언트에서이를 수행하는 것은 실용적이지 않을 수 있습니다. 또한 많은 git 사용자는 임시 작업을 커밋하므로 모든 커밋을 엄격하게 검사하는 것은 비생산적입니다.

표준 솔루션은 서버 측 후크입니다. pre-receive푸시가 올 때마다 실행되며 원하는 경우 푸시를 거부 할 수 있는 후크를 설정했을 것입니다 . 나머지는 확인하려는 정확한 확인에 따라 다릅니다.

이에 대한 내용은 Pro Git , 7.3Git-Git 후크 사용자 정의에 설명되어 있습니다.


답변 해 주셔서 감사합니다. 새로운 Git 웹 사이트를 정말 좋아합니다. 내 유일한 문제는 특히 커밋 후크를 작성하기 시작하기가 어렵다는 것입니다. 특히 프로세스의 정확한 위치와 확인해야 할 사항을 모르기 때문입니다. 수신 전 후크를 작성하려는 경우 리모컨에 추진중인 추적 분기가 있다고 가정합니까? 내가 어떻게 알아? 나는이 인스턴스에서 가지고있는 것을 시뮬레이트 할 수있는 일종의 git 기능이 있기를 바랍니다.
dalanmiller
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.