2013-06-03 58 views
0

我已經安裝在我的Git倉庫基本post-receive鉤:當我從Eclipse推送時,爲什麼我的Git post-receive hook不能運行?

#!/bin/bash 
touch /tmp/confirm-hook 
/usr/bin/curl http://__server__/git/notifyCommit?url=file:///srv/git/repo.git 

的這點是輪詢詹金斯自動構建。

當我從命令行輸入I git push時,鉤子運行並且安排Jenkins輪詢。我可以通過檢查修改的時間戳/tmp/confirm-hook來確認鉤子本身已經運行。但是,當我從Eclipse內部推送(例如Team> Push到Upstream)時,提交會發送到回購站,但post-receive掛鉤未運行。沒有計劃投票,也沒有更新/tmp/confirm-hook

這是Eclipse的Git實現特有的東西嗎?或者我錯誤地配置了鉤子?

如果它的確與衆不同,工作副本和回購在同一臺計算機上使用,你正在推動混帳回購協議存在於服務器上/本地/路/語法

回答

1

看來,這種行爲是由於Eclipse的Jgit的使用,加上回購是一個本地路徑。據我所知,當Eclipse推到本地路徑(/path/to/repofile:///path/to/repo)上的回購時,所有功能都由Jgit提供;命令行Git工具未被使用。 Jgit目前不支持git鉤子。

當我將遠程URL更改爲使用ssh://語法(連接到同一本地計算機)時,即使Eclipse推送提交,掛鉤也會運行。

參考文獻:

+0

如何以及在哪裏需要將repo更改爲ssh://? – Gavriel

+0

@Gavriel它是遠程URL,用於需要更改的工作副本。有很多方法可以做到這一點;在這種情況下,我會編輯'.git/config'並用'ssh:// user @ localhost /'替換'file:///'。 –

1

post-receive掛鉤運行。它與您使用哪個客戶端推送到回購站無關 - 無論是命令行,Eclipse還是任何其他工具。

確保命令行和Eclispe都推送到相同的倉庫,並且該倉庫是安裝了鉤子的倉庫。

+0

謝謝您的回答。 Eclipse和命令行工具(和回購,就此而言)都在同一臺計算機上,並且肯定會推到同一個地方。提交全部到達,不管是哪個工具推送它們(我已經虔誠地檢查過'git log',因爲我一直在解決這個問題),但是'post-receive'腳本只在從命令行推送時才運行。 –

+0

從命令行和Eclipse中使用相同的用戶嗎?嘗試chmod + x post-receive以允許每個人執行。我經常忘記 – Asenar

+0

@Asenar我正在使用同一個用戶。回購也由同一用戶擁有。感謝你的想法,但我很確定現在這個問題是Jgit的一個缺陷(或特性!)。 –

相關問題