Git 结构-f选项不起作用

Git 结构-f选项不起作用,git,bash,deployment,fabric,Git,Bash,Deployment,Fabric,我已经在本地机器上成功地使用Fabric一段时间了,终于有了一个不错的部署脚本,我想在git的post接收钩子期间调用它。为了实现这一点,我有以下代码,在执行fab命令之前,所有代码都经过验证: deploy=... # CODE TO DETERMINE IF YOU SHOULD DEPLOY if [[ $deploy ]] ; then TMPFILE="/tmp/$(basename $0).$$.tmp" git cat-file blob release:fabfile.

我已经在本地机器上成功地使用Fabric一段时间了,终于有了一个不错的部署脚本,我想在git的post接收钩子期间调用它。为了实现这一点,我有以下代码,在执行
fab
命令之前,所有代码都经过验证:

deploy=... # CODE TO DETERMINE IF YOU SHOULD DEPLOY

if [[ $deploy ]] ; then
  TMPFILE="/tmp/$(basename $0).$$.tmp"
  git cat-file blob release:fabfile.py > $TMPFILE
  fab -f $TMPFILE deploy:servername.mycompany.com
  rm $TMPFILE
fi
我已经检查了方法的每一步,我确信TMPFILE的创建是正确的(它包含我的fabbile)。在/tmp/中手动运行上面的步骤w/a组合文件会导致相同的行为


最糟糕的是,它“提醒”我可以使用
-f
指定一个fabfile…我就是。

这是因为它需要一个结尾带有.py的文件。将临时文件更改为使用此文件扩展名,它将正常工作。这是fab希望允许人们使用python风格的目录类(如
fabfile/\uuuu init\uuuu)的产物。py
将使用
-f fabfile

此行为的示例如下:

╭─mgoose@Macintosh  ~
╰─$ fab -f tmp.py test
[localhost] local: whoami
mgoose

Done.
╭─mgoose@Macintosh  ~
╰─$ mv tmp.py tmp.py.tmp
╭─mgoose@Macintosh  ~
╰─$ fab -f tmp.py.tmp test

Fatal error: Couldn't find any fabfiles!

Remember that -f can be used to specify fabfile path, and use -h for help.

Aborting.
╭─mgoose@Macintosh  ~
╰─$ cat tmp.py.tmp                                                                                                                                                                                                                        1 ↵
from fabric.api import local, task

@task
def test():
    local("whoami")

看起来你想说的是
$TMPFILE
而不是
$TFILE
?对不起,你是对的,但我的脚本也是。。。谢谢你的锐利目光谢谢,我会试一试,让你知道我的结果。旁注:这是在什么地方记录的,还是我应该调整文档?现在它正在运行,但它不喜欢文件名(我想):
没有名为post receive.12345的模块
+1,接受。尝试使用在python中具有特殊意义的
,这使它能够工作。谢谢你的帮助。显然,fabric无法处理文件名中的任何特殊字符,需要一个
.py
文件。最好在文档部分添加一个注释,说明文件标志和查找。虽然事后诸葛亮与此相关,但你最好能添加一个更明确的好名字和坏名字的例子。