2011-09-07 35 views
32

Tôi đang thực hiện chương trình cảnh báo CruiseControl mỗi lần cập nhật được gửi đến kho lưu trữ từ xa của chúng tôi. Tôi đang sử dụng một cái móc sau khi cập nhật Git cho việc này.Tìm tên chi nhánh Git trong móc hậu cập nhật

Sẽ rất tuyệt nếu tôi có thể tìm ra chi nhánh nào đã được cam kết để tôi có thể sử dụng thông tin đó để thông báo cho CruiseControl chi nhánh nào cần xây dựng. Có cách nào để truy cập tên chi nhánh trong hook sau khi cập nhật không?

Trả lời

43

Tham số đầu tiên cho móc hậu cập nhật là tham chiếu chi nhánh đầy đủ - ví dụ: tôi thấy 'refs/heads/master' để đẩy đến 'origin master'. Vì vậy, một móc kịch bản ví dụ mà chỉ in các chi nhánh điều chỉnh là:

#!/bin/sh 
branch=$(git rev-parse --symbolic --abbrev-ref $1) 
echo Update pushed to branch $branch 
exec git update-server-info 

Để minh họa, khi ở trên được đặt vào móc kho từ xa/post-update tập tin sau đây được in khi thực hiện một push:

% git push origin master 
Counting objects: 5, done 
Writing objects: 100% (3/3), 247 bytes, done. 
Total 3 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (3/3), done. 
remote: Update pushed to branch master 
To /tmp/xx/a 
    e02d9cd..ab14a08 master -> master 

Dòng mới bắt đầu 'remote:' được tạo bằng tập lệnh móc của chúng tôi.

+0

Cảm ơn, Patthoyts. Sử dụng mã trên, tôi nhận được "remote: hooks/post-update: dòng 8: branch: command not found". anch – user489998

+0

Tôi đã cung cấp mẫu mở rộng. Bạn cần dòng #!/Bin/sh lúc bắt đầu. Ngoài ra, khi bạn đặt biến trong tập lệnh shell, hãy sử dụng $ để truy cập vào giá trị – patthoyts

+0

Wayhey! Điều đó đã xong. Cảm ơn rất nhiều patthoyts. – user489998

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