Terdapat tiga cangkuk di bahagian pelayan git
pre-receive: 推送接受前
update: 推送更新中
post-receive: 推送接受后
Saya ingin melaksanakan skrip dalam post-receive dan perlu mengetahui nama cawangan yang ditolak apabila pelanggan menolak. Walau bagaimanapun, selepas berunding dengan banyak maklumat, tidak disebutkan bagaimana skrip cangkuk memperoleh maklumat tolak pelanggan.
Menurut kandungan pautan Cangkuk sisi Pelayan, anda boleh mengetahui bahawa pasca terima, seperti pra-terima, akan mendapat 3 parameter sebelum pelaksanaan:
<nilai-baru> ;ref- nama>
<old-value> <new-value> <ref-name>
所以既然知道了
ref-name
和相应的hash
值,就可以根据git相应的命令得到对应的信息.如git log refs/heads/master
https://git-scm.com/book/zh/v...
Cangkuk yang berbeza akan membawa parameter berbeza dalam aliran input,
pre-receive
处理来自客户端的推送操作时,最先被调用的脚本是 pre-receive。 它从标准输入获取一系列被推送的引用。如果它以非零值退出,所有的推送内容都不会被接受。 你可以用这个钩子阻止对引用进行非快进(non-fast-forward)的更新,或者对该推送所修改的所有引用和文件进行访问控制。
update
update 脚本和 pre-receive 脚本十分类似,不同之处在于它会为每一个准备更新的分支各运行一次。 假如推送者同时向多个分支推送内容,pre-receive 只运行一次,相比之下 update 则会为每一个被推送的分支各运行一次。 它不会从标准输入读取内容,而是接受三个参数:引用的名字(分支),推送前的引用指向的内容的 SHA-1 值,以及用户准备推送的内容的 SHA-1 值。 如果 update 脚本以非零值退出,只有相应的那一个引用会被拒绝;其余的依然会被更新。
post-receive
Apabila memproses operasi tolak daripada klien, skrip pertama yang akan dipanggil ialah pra-terima. Ia mendapat satu siri rujukan ditolak daripada input standard. Jika ia keluar dengan nilai bukan sifar, semua kandungan tolak tidak akan diterima. Anda boleh menggunakan cangkuk ini untuk menghalang kemas kini bukan ke hadapan pantas kepada rujukan, atau untuk mengawal akses kepada semua rujukan dan fail yang diubah suai dengan tolak.