在结构运行中执行('hg pull')

时间:2013-09-05 13:04:53

标签: python django deployment mercurial fabric

我正在Windows主机上开发一些Django应用程序。我用任务创建了fabfile。在我的一个步骤中,我执行类似的操作:

local("hg pull")
local("hg update")

它运作正常。

在其他任务中,我尝试在远程机器上执行类似的操作:

run("hg pull")

但之后我收到错误:

[XXX.XXX.XXX.XXX] run: hg pull
Exception in thread Thread-6:
Traceback (most recent call last):
  File "C:\Python27\Lib\threading.py", line 808, in __bootstrap_inner
    self.run()
  File "C:\Users\Grzegorz\VirtualEnvs\Dummy\lib\site-packages\paramiko\agent.py", line 116, in run
    self._communicate()
  File "C:\Users\Grzegorz\VirtualEnvs\Dummy\lib\site-packages\paramiko\agent.py", line 122, in _communicate
    import fcntl
ImportError: No module named fcntl

您有什么建议我如何从我的mercurial存储库中提取和更新更改?

2 个答案:

答案 0 :(得分:0)

好的,现在可以了。我没有在我的虚拟环境中更改任何内容,但是从存储库设置了我的源代码的正确路径,并调用类似的东西:

run('hg pull https://usr:pwd@bitbucket.org/account/myproject')

答案 1 :(得分:0)

对我来说失败了同样的错误,直到我设置:

fabric.api.env.forward_agent = False

我最初有一个ssh:// target作为默认的repo,所以我猜这个远程ssh-agent不喜欢我的身份(但喜欢远程用户比我试图转发的更好)。

切换到https:// target,就像你所做的那样,也可以通过支持ssh身份来解决这个问题。