Apakah git hook didorong ke remote saat saya 'git push'?

95

Jika saya membuat skrip hook baru di repositori lokal saya di repo / .git / hooks / post-commit dan kemudian saya menjalankan "git push" apakah hook didorong ke remote? Lalu, ketika pengembang lain menjalankan "git pull" dari sumber yang sama, apakah mereka akan mendapatkan kait baru saya?

slacy
sumber
3
Mungkin bantuan ini stackoverflow.com/questions/3462955/…
René Höhle
Terkait (dengan jawaban yang sangat berguna): Dapatkah skrip hook Git dikelola bersama dengan repositori?
Marc. 2377

Jawaban:

81

Tidak. Hook adalah per repositori dan tidak pernah didorong. Demikian pula, konfigurasi repo tidak didorong, juga tidak ada apa pun .git/info, atau sejumlah hal lainnya.

Mendorong dan menarik hanya menukar cabang / tag dan objek komit (dan apa pun yang dapat dijangkau dari komit, misalnya pohon, gumpalan).

Lily Ballard
sumber
14
Apakah ada cara untuk memasang kait di tengah dan menariknya ke setiap klon, dan menerapkannya.
f1wade
4
@ f1wade Anda dapat menambahkan .githooksdirektori yang akan dikontrol versinya, lalu sym-link atau buat skrip hook pembungkus dari dalam .git. Kloning tidak akan .githooksterhubung secara otomatis tetapi setelah terhubung, Anda dapat mendorong dan menarik versi baru dari skrip hook.
Philip Couling
47

Tidak, git hook tidak didorong atau ditarik, karena mereka bukan bagian dari kode repositori.

Silakan merujuk ke dokumentasi untuk daftar hook sisi-klien dan sisi-server sederhana.

Jika Anda ingin mengaktifkan beberapa hook untuk semua klien yang mengkloning atau menarik dari repositori tertentu, Anda harus menambahkan hook ke basis kode Anda dan kemudian membuat skrip Anda sendiri untuk menyalinnya, atau menautkannya dari repo/.git/hooks/.

Marco Leogrande
sumber
4
tapi bagaimana naskah salinan dipanggil?
Adam Johns
6
@AdamJohns Itu dipanggil oleh pengguna / pengembang, mungkin dalam bentuk setup.shyang dijalankan dev ketika mereka pertama kali mengkloning repositori. Setelah ini, pembaruan pada hook dapat terjadi secara otomatis dengan memiliki hook yang menjalankan ulang skrip yang memperbaruinya setelah setiap penarikan, misalnya. Jadi, Anda tidak harus bergantung pada pengembang untuk melakukannya sendiri.
cm92
4

Sayangnya tidak ada tetapi sejak git 2.9 Anda dapat menempatkannya ke dalam folder .githooks (seperti yang disebutkan orang lain) dan menjalankan:

git config --local core.hooksPath .githooks/

Jadi tidak perlu symlink atau file copy.

Marco Medrano
sumber