情況如下:
我在ubuntu server 14.04 上面安裝了gitlab,來託管項目代碼。然後想通過gitlab的web hook 功能來做測試伺服器代碼自動化更新代碼功能。現在遇到一個問題:就是我用戶端在master分支上面push代碼的時候,我測試伺服器的代碼目錄並沒有自動更新。我的shell指令碼如下:
!/bin/bash
echo 'haha:::==' >> /tmp/wtz.log
cd /srv/www/bfar-ng
echo 'my name is gitlab'>> /tmp/wtz.log
git checkout master
git pull origin master >> /srv/www/deploy/info.log
git pull origin master
echo 'you are so cute!!!::'>> /tmp/wtz.log
查看wtz.log 後發現echo 'my name is gitlab'>> /tmp/wtz.log 和echo 'you are so cute!!!::'>> /tmp/wtz.log 都成功寫入到記錄檔中。但測試伺服器項目原代碼就是沒有自動更新。除非手動git pull origin master 或者 在終端裡面直接執行 上面的shll。它才會更新。
ps:項目目錄我都設定777許可權了。
求教為啥無法執行git命令。
回複內容:
情況如下:
我在ubuntu server 14.04 上面安裝了gitlab,來託管項目代碼。然後想通過gitlab的web hook 功能來做測試伺服器代碼自動化更新代碼功能。現在遇到一個問題:就是我用戶端在master分支上面push代碼的時候,我測試伺服器的代碼目錄並沒有自動更新。我的shell指令碼如下:
!/bin/bash
echo 'haha:::==' >> /tmp/wtz.log
cd /srv/www/bfar-ng
echo 'my name is gitlab'>> /tmp/wtz.log
git checkout master
git pull origin master >> /srv/www/deploy/info.log
git pull origin master
echo 'you are so cute!!!::'>> /tmp/wtz.log
查看wtz.log 後發現echo 'my name is gitlab'>> /tmp/wtz.log 和echo 'you are so cute!!!::'>> /tmp/wtz.log 都成功寫入到記錄檔中。但測試伺服器項目原代碼就是沒有自動更新。除非手動git pull origin master 或者 在終端裡面直接執行 上面的shll。它才會更新。
ps:項目目錄我都設定777許可權了。
求教為啥無法執行git命令。
之前正好搞過這個,主要還是許可權的問題,最好用 sudo git pull origin master
, 然後參照這個 http://stackoverflow.com/questions/3173201/sudo-in-php-exec 將 PHP 的執行使用者加到 sudo 免密輸入的列表中...
git pull origin master試試
已搞定了,www-data 的許可權問題。
正好也碰到這個問題 。
現在是centos伺服器,用國內的coding.net作託管的私人項目。和你情況一樣
現是是webhook提交到一個php,然後通過這個php執一個shell。
php裡代理是這樣的:echo shell_exec('sh ./webhook.sh');
shell是這樣的 `#!/bin/sh
echo >> ./_n.log
git pull`
只能去linux裏手動git pull,日誌也能輸出成功
為什麼這個不能執行