Ini sangat aneh tetapi ketika mengatur repositori git dan membuat kait pasca-terima dengan:
echo "--initializing hook--"
cd ~/websites/testing
echo "--prepare update--"
git pull
echo "--update completed--"
kait memang berjalan, tetapi tidak pernah berhasil menjalankan git pull dengan benar:
6bfa32c..71c3d2a master -> master
--initializing hook--
--prepare update--
fatal: Not a git repository: '.'
Failed to find a valid git directory.
--update completed--
jadi saya bertanya pada diri saya sekarang, bagaimana mungkin untuk membuat hook memperbarui klon dengan pasca-terima?
dalam hal ini pengguna menjalankan proses adalah sama, dan semuanya di dalam folder pengguna jadi saya benar-benar tidak mengerti ... karena jika saya masuk secara manual ke
cd ~/websites/testing
git pull
ini bekerja tanpa masalah ...
bantuan apa pun akan sangat dihargai
Terima kasih banyak
Satu hal yang saya alami adalah menggunakan
post-update
hook '- git-dir' bekerja sangat baik tetapi git masih mengeluh tentang pohon yang hilang (walaupun menggunakan '--work-tree')Singkatnya, ini tidak berhasil:
git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull
sedangkan ini bekerja:
cd /path/to/websites/testing
git --git-dir /path/to/websites/testing/.git pull
sumber
Tidakkah ini berhasil?
Diedit
Lebih baik lagi
sumber
Sudahkah Anda mencoba dengan path lengkap bukannya ~?
sumber
Script mungkin dipanggil dengan
/bin/sh
, yang tidak mengerti~
. Cobalah dengan path lengkap~
sebagai gantinya.sumber
Jawaban yang disarankan pertama adalah benar - ketika sebuah hook sedang menjalankan GIT_DIR dll sudah diatur. Namun, jika Anda ingin dapat menggunakan skrip di repositori lain maka metode itu cacat karena kode-keras mengatur ulang GIT_DIR. Seperti yang tersirat, cara lain adalah menghapus variabel dengan menggunakan env sebagai berikut: env -i git reset --Dengan jelas perintah apa yang Anda jalankan di sana terserah Anda - itu hanya bit 'env -i' yang penting .
sumber