Tôi gặp sự cố sau. Tôi đã cập nhật 'post-nhận' để cd vào một thư mục nào đó và sau đó kéo repo để triển khai nó như vậy:git post-receive không hoạt động chính xác
#!/bin/bash
cd /var/www/site
git pull origin master
Tuy nhiên bất cứ khi nào tôi làm 'thầy đẩy nguồn gốc git' trên máy tính địa phương của tôi tôi nhận được như sau:
Counting objects: 5, done.
Delta compression using up to 2 threads.
(etc..)
remote: fatal: Not a git repository: '.'
Tuy nhiên, khi tôi tự cd để /var/www/site
và làm git pull origin master
nó hoạt động rực rỡ.
Brilliant, chỉ là những gì tôi cần. Bạn có nhớ giải thích lý do tại sao điều này cần phải được thực hiện? – andy
'GIT_DIR' là một trong số ít các biến môi trường mà bạn có thể đặt cho các lệnh git khác nhau. Trong hook sau khi nhận, '$ GIT_DIR' luôn luôn (?) Được đặt thành' .'. Nếu bạn 'cd' ở nơi khác,' git pull' vẫn thấy '$ GIT_DIR' được đặt thành' .' và hy vọng tìm thấy repo trong '.', nhưng bạn đã di chuyển và nó không ở đó. Xóa nó ra làm cho git trở lại hành vi "bình thường" của nó (tìm trong './. Git', ở vị trí bạn' cd'-ed). – torek