2013-02-18 97 views
2

我該如何設置我的開發環境來捕獲斷點並調試git鉤子的執行?讓我們說焦點掛鉤是預先提交的,並且下面的groovy腳本需要被調試?調試git鉤子的執行

#!/usr/bin/env groovy 

// Arguments for git log command. 
def logArgs = ['max-count': '1', 'pretty': 'format:%an commited %s {%h}'] 

// Invoke git log command. 
def gitLog = logArgs.inject(['git', 'log']) { cmd, k, v -> 
    cmd << "--$k=$v" 
}.execute() 

// Get git log message to be used as notification message. 
def message = gitLog.text 
println(message) 

我該怎麼做才能看到輸出?

回答

2

我建議你做到以下幾點:

  1. 創建actual_hook_file.groovy並把所有你鉤代碼那裏。
  2. 在只有你現有的鉤用途:groovy -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=9090,server=n,suspend=y actual_hook_file.groovy
  3. 觸發器鉤
  4. 附加到JVM上的9090端口調試工具(Remote Java Application in Eclipse,例如)。
  5. 調試!

因此,這個想法是在調試模式下運行JVM(它可能與Java有所不同,而不是Groovy)。最簡單的方法是通過包裝文件。

+0

這正是我所需要的。謝謝! – 2013-02-19 19:01:42

+0

順便說一句,我發現我不得不在地址= 9090之前將server = n切換到新位置,並相應地調整防火牆。否則,連接會被拒絕。此外,suspend = n必須設置爲= y,這樣jdwp纔會等待我的eclipse遠程調試。最後,我發現地址可以是一個主機ip的前綴,如下所示:address = 127.0.0.1:9090 – 2013-02-19 19:20:07

+0

對不起,我從我的配置中複製了調試字符串。當然'暫停'應該是'y'。我會編輯答案。但是'地址'和'服務器'排序不應該緊。 – madhead 2013-02-19 19:27:22