Jalankan hook pre-commit git hanya jika file dalam direktori tertentu dimodifikasi


11

Saya mencoba membuat skrip bash untuk hook pre-commit git. Setiap kali komit dibuat, saya ingin memeriksa apakah file dalam direktori tertentu adalah bagian dari file yang dipentaskan dan jika demikian, jalankan perintah (tugas kasar). Sejauh ini saya memiliki semuanya berfungsi, kecuali hanya berjalan jika file tertentu dimodifikasi. Saya mencoba membuatnya berfungsi:

SRC_PATTERN="site/assets/js/"
if [ grep --quiet $SRC_PATTERN `git diff --cached --name-only` ]
then
  echo "none"
  exit 0
fi

Sayangnya ini memberi saya kesalahan.

Jawaban:


9

mencoba,

git diff --cached --name-only | if grep --quiet "$SRC_PATTERN"
then
    ...

Selamat melakukan peretasan


8

Coba seperti ini:

SRC_PATTERN="site/assets/js/"
if git diff --cached --name-only | grep --quiet "$SRC_PATTERN"
then
  echo "none"
  exit 0
fi

Ini sangat mirip dengan jawaban yang diterima, tetapi jawaban itu salah. Di bash / sh, setiap perintah dalam pipeline dieksekusi dalam subshell terpisah, jadi keluar di bagian kemudian hanya akan keluar dari subshell, kode apa pun yang mengikuti fi masih akan dieksekusi!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.