Saya sedang menguji kait pra-terima git di server. Ini adalah isi dari hooks/pre-receive:

#!/bin/bash
echo "Hi $USER"
source pre-receive-hooks/bye

Isi dari hooks/pre-receive-hooks/bye adalah:

#!/bin/bash
echo "Bye $USER"

File hooks/pre-receive dan hooks/pre-receive-hooks/bye keduanya dapat dieksekusi, memiliki izin yang sama, dan pemilik serta grup yang sama.

Ketika saya Push dari klien ke server saya mendapatkan pesan:

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Hi sergioro
remote: hooks/pre-receive: line 10: pre-receive-hooks/bye: No such file or directory
To drop:/git/hooks_practice.git
   3fbfa15..c15d08d  master -> master

echo pertama berfungsi tetapi kemudian perintah source gagal. Mengapa source gagal? Atau lebih umum, bagaimana cara mendapatkan skrip dari dalam kait Git?

Saya juga mencoba perintah berikut tetapi semua mengembalikan kesalahan yang sama ketika saya Push:

source ./pre-receive-hooks/bye   # relative path
. pre-receive-hooks/bye          # source using the dot command
./pre-receive-hooks/bye          # run script directly

0
MAGA 17 April 2020, 20:18

1 menjawab

Jawaban Terbaik

Mengubah source pre-receive-hooks/bye menjadi source hooks/pre-receive-hooks/bye memecahkan masalah. Rupanya kait Git memiliki $PWD sama dengan direktori root repositori, bukan direktori kait.

0
sergio MAGA 17 April 2020, 17:30