CodeBlanks Logo Icon CodeBlanks

pre-receive

Sunucu tarafı pre-receive hook'unu öğrenirsin.

pre-receive hook nedir?

`pre-receive`, sunucu tarafında çalışan ve bir push işlemi kabul edilmeden önce devreye giren hook'tur. Sunucuya gönderilen referans güncellemelerini kontrol edebilir. Betik sıfırdan farklı bir çıkış koduyla biterse push reddedilir.
#!/bin/bash
echo "Push denetleniyor"

Push denetimi ve giriş verisi

`pre-receive` hook'u, standart girdiden her güncelleme için eski nesne kimliğini, yeni nesne kimliğini ve referans adını alır. Bu bilgilerle gönderilen dallar veya etiketler üzerinde politika denetimi yapılabilir.
while read old new ref
do
  echo "$ref"
done

Uygulama Ana dala push işlemini engelle

Bir `pre-receive` betiği yaz. Girdi satırlarını `old`, `new` ve `ref` değişkenlerine oku. Referans `refs/heads/main` ise push işlemini reddet. Diğer durumlarda denetimin tamamlandığını yazdır.

Başlangıç kodu

terminal
# Girdi satırlarını oku
# Referansı denetle

Örnek çözüm

terminal
#!/bin/bash
while read old new ref
do
  if [[ "$ref" == "refs/heads/main" ]]; then
    echo "Ana dala push yasak" >&2
    exit 1
  fi
done
echo "Push kontrol edildi"

Beklenen çıktı

Push kontrol edildi

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 pre-receive hook hangi aşamada çalışır?

  • Depo klonlanırken
  • Commit geçmişi görüntülenirken
  • Yerel dosya kaydedilirken
  • Push sunucuda kabul edilmeden önce Doğru cevap

Açıklama: `pre-receive`, sunucuya ulaşan push isteğinin kabul edilip edilmeyeceğini belirlemek için çalışır.

2 pre-receive girişini oku

Soru
while read old new ref
do
  echo "$_____"
done____
Cevap
while read old new ref
do
  echo "$_____"
doneref

Açıklama: `ref` değişkeni, güncellenen referansın adını tutar.

3 pre-receive kavramlarını eşleştir

Kavram Anlamı
pre-receive Push öncesinde çalışır
Standart girdi Güncelleme bilgilerini taşır
Sunucu tarafı Uzak depoda çalışır
Sıfır dışı çıkış kodu Push işlemini reddeder

Uzman bölümündeki tüm dersler