6

我想使用 Fabric 命令来设置本地开发环境,作为其中的一部分,我希望能够设置 git 远程。这工作正常:

from fabric.api import local

def set_remote():
    """ Set up git remote for pushing to dev."""
    local('git remote add myremote git@myremote.com:myrepo.git')

第二次运行时会出现问题 - 当本地命令因为远程已经存在而爆炸时。我想通过首先检查遥控器是否存在来防止这种情况:

在伪代码中,我想做以下事情:

if 'myremote' in local('git remote'):
    print 'Remote \'myremote\' already exists.'
else:
    local('git remote add myremote git@myremote.com:myrepo.git')

我怎样才能做到这一点?

4

1 回答 1

10

您可以使用settings上下文管理器warn_only

from fabric.context_managers import settings

with settings(warn_only=True):
    # some command we are all right with having fail

或者,您可以将命令capture上的关键字 arg设置为:localTrue

if 'myremote' in local('git remote', capture=True):
    print 'Remote \'myremote\' already exists.'
else:
    local('git remote add myremote git@myremote.com:myrepo.git')
于 2012-12-04T22:32:37.550 回答