【FAQ】gerrit change-merged hook 中,無法使用相對路徑,bug?

【期望】在 gerrit 的 change-merged hook 中,執行 shell 命令,並將輸出結果重定向到文件中。

單獨執行腳本是可以的,可是放在 hook 中卻一直沒法兒將結果重定向到文件中,也沒有什麼錯誤提示,就是不寫。


【各種嘗試】

1,bash 與 dash

鑑於之前被 gerrit hook 執行時 bash 和 dash 的區別坑過,這回第一個就檢查這裏;

2,然後是各種重定向:

>、文件描述符、exec、

3,然後改成複雜的 python(寶寶心裏苦啊):

import subprocess

output_file = 'result.json'
query_cmd = 'ssh xxx > ' + output_file
try:
    subprocess.check_output(query_cmd, stderr=subprocess.STDOUT,
                            shell = True)
except subprocess.TimeoutExpired:
    print("Communication timeout expired.")
else:
    xxx

4,權限?

5,最後放棄治療,不重定向了,輸出給字符串,然後解析字符串。,沒有重定向到文件,當然好了。


【分析】

耗費了半天的時間,可是不甘心啊。回頭又仔仔細細過了一遍代碼,爲啥單獨可以執行,放在 hook 裏自動就沒法兒執行了?

最後我想,是不是 hook 路徑不支持寫入文件?但是它 gerrit 能管這麼多?換個路徑試試?後來一想,我換成絕對路徑試試?

然後,就好了。

辛苦我大半天,感覺到被 gerrit 深深的調戲了一番。


gerrit hook 竟然不支持相對路徑!也是讓人醉了。這個應該算是 bug  了吧。。。

雖然被調戲的很不開心,但是溫習了一遍 bash、dash、subporcess、重定向各種知識,就算是補課了吧快哭了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章