2012-07-16 32 views
25

Vì "thử nghiệm" là một cách sử dụng phổ biến cho một móc Git, câu hỏi của tôi là khó tìm kiếm.Làm thế nào để kiểm tra git hooks

Tôi đang viết một móc nối tiếp nhận khá liên quan và muốn biết cách tốt nhất để kiểm tra nó là gì. Hiện nay quá trình của tôi là:

  • thực hiện thay đổi để gửi-nhận được trong một hình nộm repo "từ xa"
  • làm cho một sự thay đổi đến một repo địa phương giả
  • cam kết thay đổi trong repo địa phương giả
  • đẩy thay đổi dummy remote repo

Có cách nào dễ dàng hơn để kiểm tra điều này không? Lý tưởng nhất là nó sẽ như thế nào:

  • làm thay đổi (s) để gửi-nhận được trong một repo giả
  • vấn đề "ma thuật" lệnh để kiểm tra sau khi nhận được

Có lẽ tôi có thể "phát hành lại" một push trước đó hoặc có repo từ xa hoạt động như thể nó vừa nhận được push với một hash cụ thể?

Trả lời

13

Viết một móc chỉ ghi lại đối số/môi trường của nó và đổ vào tệp. Sau đó, bạn chỉ có thể gọi lại móc thực sự lúc rảnh rỗi của bạn với cùng một môi trường/đối số và nó sẽ hoạt động như thể bạn vừa phát hành lại cùng một lần đẩy.

+0

Đó là về những gì tôi đã làm nhưng thay vào đó bằng cách kiểm tra thủ công (lặp lại) các biến có liên quan. – Errol

+9

cái móc "dumper" trông như thế nào? –

+4

@ JonWatson, tôi vừa mới sử dụng 'echo $ @; echo; pwd; echo; set' – Lucas

6

Trả lời câu hỏi bốn tuổi này.

Nếu bạn muốn thử nghiệm móc trong môi trường địa phương, tôi cung cấp cho các lệnh chi tiết để theo dõi, sử dụng post-receive như mẫu:

$ mkdir /tmp/hook_test 
$ cd /tmp/hook_test 

# set local git repo, where you put hooks in it. 
$ git clone --bare https://github.com/git/git.git 

# set develop environment which is cloned from the new created repo. 
$ git clone git.git repo 

# copy and rename the hook you need test to "post-receive" 
$ cd git.git/hooks 
$ cp ~/post-receive-test post-receive 

# suppose the hook script is bash script. 
# edit "post-receive" and add "set -x" to second line in it to active debug 

$ cd /tmp/hook_test/repo 
# emulate a hook trigger, do some changes, "git add" and "git commit" it 

$ git push 

# Now you should see the script "post-receive" runs automatically with debug details. 

Bạn nên được tự do chạy git push, mà các bản cập nhật chỉ được đẩy tới địa phương repo /tmp/hook_test/git.git

Các vấn đề liên quan