Ini ialah arahan git-receive-pack yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.
JADUAL:
NAMA
git-receive-pack - Terima apa yang ditolak ke dalam repositori
SINOPSIS
git-receive-pack
DESCRIPTION
Dipanggil oleh pergi hantar-pek dan mengemas kini repositori dengan maklumat yang disuap daripada
hujung terpencil.
Perintah ini biasanya tidak digunakan secara langsung oleh pengguna akhir. UI untuk protokol ialah
pada pergi hantar-pek sisi, dan pasangan program dimaksudkan untuk digunakan untuk menolak kemas kini ke
repositori jauh. Untuk operasi tarik, lihat git-fetch-pack(1).
Perintah tersebut membolehkan penciptaan dan pemajuan pantas ref sha1 (kepala/tag) pada
hujung jauh (secara tegasnya, ia adalah hujung tempatan git-receive-pack berjalan, tetapi kepada pengguna
yang duduk di hujung pek hantar, ia sedang mengemas kini alat kawalan jauh. keliru?)
Terdapat contoh dunia sebenar lain menggunakan cangkuk kemas kini dan pasca kemas kini yang terdapat dalam
Direktori dokumentasi/cara.
git-receive-pack menghormati pilihan konfigurasi receive.denyNonFastForwards, yang memberitahu jika
kemas kini kepada ref harus dinafikan jika mereka tidak maju pantas.
PILIHAN
Repositori untuk disegerakkan.
DAHULU TERIMA HOOK
Sebelum mana-mana rujukan dikemas kini, jika fail $GIT_DIR/hooks/pra-terima wujud dan boleh dilaksanakan, ia
akan dipanggil sekali tanpa parameter. Input standard cangkuk ialah satu baris
setiap rujukan untuk dikemas kini:
sha1-lama SP sha1-nama semula SP baharu LF
Nilai nama semula adalah relatif kepada $GIT_DIR; cth untuk ketua induk ini
"refs/heads/master". Dua nilai sha1 sebelum setiap nama semula ialah nama objek untuk
nama semula sebelum dan selepas kemas kini. Rujukan yang akan dibuat akan mempunyai sha1-lama sama dengan 0{40},
manakala rujukan untuk dipadamkan akan mempunyai sha1-baru bersamaan dengan 0{40}, jika tidak sha1-lama dan
sha1-new mestilah objek yang sah dalam repositori.
Apabila menerima tolakan yang ditandatangani (lihat tolak git(1)), sijil tolak yang ditandatangani disimpan dalam a
gumpalan dan pembolehubah persekitaran GIT_PUSH_CERT boleh dirujuk untuk nama objeknya. Lihat
penerangan cangkuk pasca terima sebagai contoh. Selain itu, sijil adalah
disahkan menggunakan GPG dan hasilnya dieksport dengan pembolehubah persekitaran berikut:
GIT_PUSH_CERT_SIGNER
Nama dan alamat e-mel pemilik kunci yang menandatangani tolak
perakuan.
GIT_PUSH_CERT_KEY
ID kunci GPG bagi kunci yang menandatangani sijil tolak.
GIT_PUSH_CERT_STATUS
Status pengesahan GPG bagi sijil tolak, menggunakan mnemonik yang sama seperti
digunakan dalam %G? format keluarga perintah git log (lihat git-log(1)).
GIT_PUSH_CERT_NONCE
Rentetan nonce proses meminta penandatangan untuk memasukkan dalam sijil tolak. Jika
ini tidak sepadan dengan nilai yang direkodkan pada pengepala "nonce" dalam sijil tolak,
ia mungkin menunjukkan bahawa sijil itu adalah sijil yang sah yang dimainkan semula daripada a
sesi "git push" berasingan.
GIT_PUSH_CERT_NONCE_STATUS
TIDAK DIMINTA
"git push --signed" menghantar nonce apabila kami tidak memintanya menghantar satu.
HILANG
"git push --signed" tidak menghantar sebarang tajuk nonce.
BAD
"git push --signed" menghantar nonce palsu.
OK
"git push --signed" menghantar nonce yang kami minta untuk dihantar.
SLOP
"git push --signed" menghantar nonce berbeza daripada apa yang kami minta untuk dihantar sekarang, tetapi
dalam sesi sebelumnya. Lihat pembolehubah persekitaran GIT_PUSH_CERT_NONCE_SLOP.
GIT_PUSH_CERT_NONCE_SLOP
"git push --signed" menghantar nonce berbeza daripada apa yang kami minta untuk dihantar sekarang, tetapi dalam a
sesi berbeza yang masa mulanya berbeza dengan beberapa saat ini dari
sesi semasa. Hanya bermakna apabila GIT_PUSH_CERT_NONCE_STATUS menyebut SLOP. Baca juga
tentang pembolehubah receive.certNonceSlop dalam git-config(1).
Cangkuk ini dipanggil sebelum sebarang nama semula dikemas kini dan sebelum sebarang semakan ke hadapan pantas dibuat
dilakukan.
Jika cangkuk pra-terima keluar dengan status keluar bukan sifar, tiada kemas kini akan dilakukan,
dan cangkuk kemas kini, pasca terima dan pasca kemas kini tidak akan digunakan sama ada. Ini boleh jadi
berguna untuk menyelamatkan dengan cepat jika kemas kini tidak disokong.
UPDATE HOOK
Sebelum setiap rujukan dikemas kini, jika fail $GIT_DIR/hooks/update wujud dan boleh dilaksanakan, ia adalah
digunakan sekali setiap ref, dengan tiga parameter:
$GIT_DIR/cangkuk/kemas kini nama semula sha1-lama sha1-baru
Parameter nama semula adalah relatif kepada $GIT_DIR; cth untuk ketua induk ini
"refs/heads/master". Dua hujah sha1 ialah nama objek untuk nama semula sebelum ini
dan selepas kemas kini. Ambil perhatian bahawa cangkuk dipanggil sebelum nama semula dikemas kini, jadi
sama ada sha1-old ialah 0{40} (bermaksud belum ada rujukan sedemikian), atau ia sepatutnya sepadan dengan apa yang
direkodkan dalam nama semula.
Cangkuk harus keluar dengan status bukan sifar jika ia mahu tidak membenarkan pengemaskinian ref bernama.
Jika tidak, ia harus keluar dengan sifar.
Pelaksanaan yang berjaya (status keluar sifar) cangkuk ini tidak memastikan ref akan
sebenarnya dikemas kini, ia hanya prasyarat. Oleh itu, ia bukanlah idea yang baik untuk menghantar
notis (cth e-mel) daripada cangkuk ini. Sebaliknya, pertimbangkan untuk menggunakan cangkuk pasca terima.
SELEPAS TERIMA HOOK
Selepas semua rujukan dikemas kini (atau cuba dikemas kini), jika ada kemas kini rujukan
berjaya, dan jika fail $GIT_DIR/hooks/post-receive wujud dan boleh dilaksanakan, ia akan
dipanggil sekali tanpa parameter. Input standard cangkuk ialah satu baris untuk setiap satu
berjaya mengemas kini ref:
sha1-lama SP sha1-nama semula SP baharu LF
Nilai nama semula adalah relatif kepada $GIT_DIR; cth untuk ketua induk ini
"refs/heads/master". Dua nilai sha1 sebelum setiap nama semula ialah nama objek untuk
nama semula sebelum dan selepas kemas kini. Rujukan yang dibuat akan mempunyai sha1-lama sama dengan
0{40}, manakala rujukan yang telah dipadamkan akan mempunyai sha1-baru bersamaan dengan 0{40}, jika tidak sha1-lama
dan sha1-new mestilah objek yang sah dalam repositori.
Pembolehubah persekitaran GIT_PUSH_CERT* boleh diperiksa, sama seperti dalam cangkuk pra-terima,
selepas menerima tolakan yang ditandatangani.
Menggunakan cangkuk ini, mudah untuk menjana mel yang menerangkan kemas kini kepada repositori.
Skrip contoh ini menghantar satu mesej mel setiap ref yang menyenaraikan komit yang ditolak ke
repositori, dan log sijil tolak tolak yang ditandatangani dengan tandatangan yang baik ke a
perkhidmatan pembalak:
#!/ Bin / sh
# maklumat kemas kini komit mel keluar.
sambil membaca oval nval ref
do
jika expr "$oval" : '0*$' >/dev/null
kemudian
echo "Mencipta rujukan baharu, dengan komitmen berikut:"
git rev-list --cantik "$nval"
lagi
echo "Komit baru:"
git rev-list --pretty "$nval" "^$oval"
fi |
mail -s "Perubahan kepada ref $ref" commit-list@mydomain
dilakukan
# sijil tolak yang ditandatangani log, jika ada
jika ujian -n "${GIT_PUSH_CERT-}" && ujian ${GIT_PUSH_CERT_STATUS} = G
kemudian
(
gema tidak dijangkakan ialah ${GIT_PUSH_NONCE}
gumpalan fail kucing git ${GIT_PUSH_CERT}
) | mail -s "sijil tolak daripada $GIT_PUSH_CERT_SIGNER" push-log@domain saya
fi
jalan keluar 0
Kod keluar daripada seruan cangkuk ini diabaikan, namun kod keluar bukan sifar akan
menjana mesej ralat.
Ambil perhatian bahawa nama semula mungkin tidak mempunyai sha1-new apabila cangkuk ini dijalankan. Ini boleh
mudah berlaku jika pengguna lain mengubah suai ref selepas ia dikemas kini oleh git-receive-pack,
tetapi sebelum mata kail dapat menilainya. Adalah disyorkan bahawa cangkuk bergantung pada sha1-new
dan bukannya nilai nama semula semasa.
SELEPAS KEMASKINI HOOK
Selepas semua pemprosesan lain, jika sekurang-kurangnya satu rujukan telah dikemas kini, dan jika
Fail $GIT_DIR/hooks/post-update wujud dan boleh dilaksanakan, kemudian post-update akan dipanggil
dengan senarai rujukan yang telah dikemas kini. Ini boleh digunakan untuk melaksanakan sebarang repositori
tugas pembersihan yang luas.
Kod keluar dari seruan cangkuk ini diabaikan; satu-satunya perkara yang tinggal untuk
git-receive-pack untuk dilakukan pada ketika itu adalah untuk keluar sendiri.
Cangkuk ini boleh digunakan, sebagai contoh, untuk menjalankan git update-server-info jika repositori adalah
dibungkus dan dihidangkan melalui pengangkutan bodoh.
#!/ Bin / sh
exec git update-server-info
Gunakan git-receive-pack dalam talian menggunakan perkhidmatan onworks.net