2010-03-11 2 views
2

중앙 커밋 저장소가 각 커밋의 각 파일에 대한 간단한 테스트를 수행 할 수 있도록 업데이트 훅을 만듭니다. 그러나 나는 "밀기 (push)"에서 커밋의 모든 이름을 기침하는 법을 모릅니다.git update hook : 커밋중인 모든 rev 찾기

클라이언트가 푸시하고있는 커밋 수와 상관없이 업데이트 후크는 설계 상 한 번만 호출됩니다. 예를 들어, 그 HEAD가 e2706ec 겠지, 나는 두 커밋 만들 : 그럼

$ echo 'date' >>foo && git commit -am'Touched foo' 
[master e5c9682] Touched foo 
1 files changed, 1 insertions(+), 0 deletions(-) 
$ echo 'date' >>bar && git commit -am'Touched bar' 
[master bdc1fd1] Touched bar 
1 files changed, 1 insertions(+), 0 deletions(-) 

나는 중앙 저장소에 코드를 밀어 다음 .git/후크/업데이트 스크립트를 한 번 호출되는

$ git push 

  • 심판/헤드/마스터
  • e2706ec31e51b9bbd4010e79fd7186089c59690e
  • :이 인수 0
  • bdc1fd17e8209bbb987b5358a0b49b20d9589103

힘내 업데이트 후크 ref_name, old_rev 및 new_rev에 전달한다. 전달되지 않는 것은 old_rev와 new_rev 사이의 모든 rev의 이름입니다 (이 경우 e5c9682).

old_rev와 new_rev가 주어지면 클라이언트가 푸시하려고하는 각 rev를 얻으려면 어떻게해야합니까?

답변

4

git rev-list ^old_rev new_rev

그것은 모든이 둘 사이에 커밋 목록

+1

예,이 올바른지 커밋이다. http://progit.org/book/ch7-4.html에서는 좀 더 구체적인 예를 제시합니다. – swampsjohn

+0

그랬습니다. 감사! –