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.

Dachande663
sumber

Jawaban:

9

mencoba,

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

Selamat melakukan peretasan

mitch.tux
sumber
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!

SimonO
sumber