簡體   English   中英

git post-receive hook 沒有運行

[英]git post-receive hook not running

我有一個裸倉庫服務器端,我能夠從我的本地機器成功提交和推送。 但是,post-receive 鈎子沒有運行。 細節:

  • 使用 SSH 作為協議
  • 我已將標准“post-receive.sample”重命名為“post-receive”
  • 該文件具有-rwxr-xr-x權限
  • 該文件由擁有 repo 的同一用戶擁有,即登錄和推送的同一 SSH 用戶
  • 實際的推動很順利; 文件已更新 - 只是未運行的鈎子
  • 我嘗試在鈎子前后放置echo "Some text" ,但這沒有顯示(請參閱: Post Commit Hook Not Running )。
  • 鈎子腳本包含在下面,雖然這似乎不會導致問題
  • 在 Ubuntu 10.04 上使用 git 1.7.0.4

.

user@server:/home/repos/project1/hooks# cat post-receive
#!/bin/sh
echo "Hook is running..."
export GIT_WORK_TREE=/home/web/project1/www/
git checkout -f
rm -rf /home/web/project1/www/temp/

為了讓 Git 鈎子運行,它需要設置權限以允許它是可執行的。 如果鈎子似乎沒有運行, 請檢查權限,並確保它是可執行的。 如果不是,您可以像這樣使所有鈎子可執行:

chmod ug+x .git/hooks/*

...或者如果你想制作一個單一的鈎子(例如post-receive )可執行文件:

chmod ug+x .git/hooks/post-receive

(感謝這篇文章

我有這個問題。 我的腳本文件名中有一個錯字。

后接收而不是后接收

該問題與文件系統的安裝有關。 該分區已掛載為noexec ,因此無法執行任何文件。 這導致鈎子無法運行。 我刪除了noexec標志,現在它可以正常工作了。

如果代碼庫沒有變化,似乎 GIT 不會運行post-receive鈎子。

就我而言,

post 鈎子沒有被執行,但“推送”操作不斷返回以下消息。

一切都是最新的

所以我只是在我的代碼中創建了一個空文件,提交了然后推送到遠程。 在其上執行post-receive鈎子。

我使用了 MacBook,這對我的情況有所幫助:

chmod ug+x .husky/*
chmod ug+x .git/hooks/*

我在 Centos 6 系統上遇到了同樣的問題,結果是 SELinux 阻止了鈎子腳本的運行。 httpd_git_script_t轉換為一個許可域在這里有幫助(因為“sesearch -A -s httpd_git_script_t -p exec”沒有產生任何結果,即沒有允許在 httpd_git_script_t 域中運行的進程具有 exec 權限):

semanage permissive -a httpd_git_script_t

你確定它沒有運行? 它一定在運行,你只是看不到它。 我的猜測是在執行 ssh 會話時沒有為您的 ssh 會話設置標准輸出,因此您永遠不會看到回聲的輸出。 該鏈接建議在本地進行測試,而不是通過 ssh。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM