【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、重定向各种知识,就算是补课了吧快哭了

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