Saya baru mengenal git jadi saya minta maaf (dan mohon koreksi saya) jika saya menyalahgunakan terminologi di sini, tapi saya akan melakukan yang terbaik.
Saya mencoba menyiapkan repo git kosong (hub) dan salinan pekerjaan situs pengembangan (prime) di server web. Saya sudah mencoba membuat pola setelah artikel ini . Saya ingin copy pekerjaan pengembangan diperbarui setiap kali repo hub didorong ke. Saya mendapat kesan bahwa pengait yang tepat untuk ini adalah post-update
, yang telah saya buat seperti ini:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Memperbarui
Ketika saya mendorong perubahan dari repo lokal saya ke hub kosong, saya mendapatkan output berikut dari skrip pasca-pembaruan:
remote: sites
remote: fatal: Not a git repository: '.'
Namun jika saya SSH ke server sebagai 'situs' pengguna dan mengeksekusi skrip ini secara manual, itu berfungsi dengan baik. Ada ide tentang apa yang mungkin salah dengan hook atau skrip ini?
GIT_DIR
perbaikan masalah.GIT_DIR
daripadaPWD
.cd
-ing mengubahPWD
bukanGIT_DIR
. Harus ada penggantian dalam git dariGIT_DIR
menjadiPWD
jika yang pertama tidak tersedia.git pull
?Coba saja:
sumber
Meskipun begitu, GIT_DIR yang tidak disetel hanya berfungsi.
masalah terjadi ketika Anda salah menyetel GIT_DIR di tempat lain.
Anda dapat menambahkannya sebagai gantinya: GIT_DIR = .git / Ini akan berhasil
sumber
Dalam kasus saya, saya telah menentukan pohon kerja, dan ini merusak beberapa perintah, seperti
pull
(atau lebih tepatnyafetch
).Untuk membatalkan pengaturan pohon kerja jika itu ada di konfigurasi git Anda adalah melalui:
(Ada cara lain untuk mengatur pohon kerja)
Perlu diperhatikan,
Hampir tidak ada perubahan dari ini menjadi masalah Anda kecuali Anda sendiri menggali lubang ini di sekitar Anda dengan menggunakan pohon kerja khusus di tempat pertama.
Kelakar:
Ini menyiratkan kepada saya bahwa git internal menggunakan jalur relatif terhadap worktree +
.git/
dalam beberapa kasus. Menurut pengalaman saya, pohon kerja tidak didukung dengan baik sama sekali, kecuali oleh bagian paling mendasar dari git. Saya belum bereksperimen secara menyeluruh, Git mungkin akan berperilaku jika saya menyetel variabel konfigurasi direktori git apa pun dengan benar, yang belum pernah saya mainkan.sumber
Anda mungkin mengalami masalah izin. Saya tidak yakin bagaimana Anda menyiapkan repo git telanjang Anda, tetapi jika dijalankan di bawah
git
pengguna, pastikan bahwagit
pengguna diizinkan untuk melakukangit pull
di direktori proyek Anda.Secara opsional, coba ini untuk mencari tahu pengguna apa Anda saat hook dijalankan:
sumber
echo `whoami`
yangwhoami
tidak?