cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimanakah cangkuk pelayan git memperoleh maklumat komit pelanggan git?

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.

Sebagai contoh, git client a menolak beberapa kemas kini cawangan hotfix1.2.3 ke git server b Saya ingin melaksanakan skrip dalam cangkuk git server b berdasarkan nama cawangan bagi tingkah laku push ini, iaitu hotfix1.2.3. Bagaimana hendak melakukannya?

怪我咯怪我咯2777 hari yang lalu824

membalas semua(2)saya akan balas

  • PHPz

    PHPz2017-05-17 10:05:16

    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>

    The script takes no parameters, but each ref that is being pushed is passed to the script on a separate line on standard input in the following format:
    <old-value> <new-value> <ref-name>

    b6b36c697eb2d24302f89aa22d9170dfe609855b 85baa88c22b52ddd24d71f05db31f4e46d579095 refs/heads/master

    所以既然知道了ref-name和相应的hash值,就可以根据git相应的命令得到对应的信息.如git log refs/heads/master

    Skrip tidak mengambil parameter, tetapi setiap ref yang ditolak dihantar ke skrip pada baris berasingan pada input standard dalam format berikut:🎜<nilai-lama> & lt;Ruj-nama & gt; 🎜 B6B36C697EB2D24302F89AA22D9170DFE609855B 85baa88C22DDDD71F05D579095 ref-name dan nilai hash yang sepadan, anda boleh mendapatkan maklumat yang sepadan mengikut arahan git yang sepadan Contohnya, git log rujukan/ketua/ induk.🎜

    balas
    0
  • 怪我咯

    怪我咯2017-05-17 10:05:16

    https://git-scm.com/book/zh/v...

    Cangkuk yang berbeza akan membawa parameter berbeza dalam aliran input,

    pra-terimapre-receive
    处理来自客户端的推送操作时,最先被调用的脚本是 pre-receive。 它从标准输入获取一系列被推送的引用。如果它以非零值退出,所有的推送内容都不会被接受。 你可以用这个钩子阻止对引用进行非快进(non-fast-forward)的更新,或者对该推送所修改的所有引用和文件进行访问控制。

    update
    update 脚本和 pre-receive 脚本十分类似,不同之处在于它会为每一个准备更新的分支各运行一次。 假如推送者同时向多个分支推送内容,pre-receive 只运行一次,相比之下 update 则会为每一个被推送的分支各运行一次。 它不会从标准输入读取内容,而是接受三个参数:引用的名字(分支),推送前的引用指向的内容的 SHA-1 值,以及用户准备推送的内容的 SHA-1 值。 如果 update 脚本以非零值退出,只有相应的那一个引用会被拒绝;其余的依然会被更新。

    post-receiveApabila 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.

    kemas kini🎜Skrip kemas kini sangat serupa dengan skrip pra-terima, kecuali ia akan dijalankan sekali untuk setiap cawangan dikemas kini. Jika penolak menolak kandungan ke berbilang cawangan pada masa yang sama, pra-terima hanya dijalankan sekali, berbeza dengan kemas kini, yang dijalankan sekali untuk setiap cawangan ditolak. Ia tidak membaca kandungan daripada input standard, tetapi mengambil tiga parameter: nama rujukan (cawangan), nilai SHA-1 kandungan yang ditunjukkan oleh rujukan sebelum tolakan, dan nilai SHA-1 kandungan pengguna berhasrat untuk menolak. Jika skrip kemas kini keluar dengan nilai bukan sifar, hanya rujukan yang sepadan akan ditolak; 🎜 🎜pasca-terima🎜Cangkuk pasca-terima berjalan selepas keseluruhan proses selesai dan boleh digunakan untuk mengemas kini perkhidmatan sistem lain atau memberitahu pengguna. Ia menerima data input standard yang sama seperti pra-terima. Penggunaannya termasuk menyiarkan ke senarai mel, memberitahu pelayan penyepaduan berterusan, atau mengemas kini sistem penjejakan tiket - anda juga boleh menganalisis maklumat komit untuk menentukan sama ada tiket itu bermasalah atau tidak Perlu dihidupkan, diubah suai atau dimatikan. Skrip ini tidak boleh mematikan proses tolak, tetapi klien akan kekal bersambung sehingga ia selesai berjalan, jadi gunakannya dengan berhati-hati jika anda ingin melakukan apa-apa lagi, kerana ia akan mengambil masa yang lama. 🎜

    balas
    0
  • Batalbalas