Python Can';无法从GitHub的结构脚本提交

Python Can';无法从GitHub的结构脚本提交,python,github,fabric,Python,Github,Fabric,我正在使用Fabric运行一个ANT任务,然后上传到GitHub。剧本已经成功了,但并不始终如一,所以很难理解为什么 我在这里读到,织物的加工过程是 git add git提交 git推送 但我一直看到这种输出 # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # nothing to commit (working directory clean) Fatal error: local() en

我正在使用Fabric运行一个ANT任务,然后上传到GitHub。剧本已经成功了,但并不始终如一,所以很难理解为什么

我在这里读到,织物的加工过程是

  • git add
  • git提交
  • git推送
  • 但我一直看到这种输出

    # On branch master
    # Your branch is ahead of 'origin/master' by 1 commit.
    #
    nothing to commit (working directory clean)
    
    Fatal error: local() encountered an error (return code 1) while executing 'git commit -m "Latest Selenium screenshots for View Employee"'
    
    Aborting.
    
    我编写的函数如下所示

    def deploy():
        process = test()
        os.chdir('\\Documents and Settings\markw\GitTest')
        with cd('\\Documents and Settings\markw\GitTest'):
            local('git reset --soft HEAD')
            local('git pull origin master')
            local('git add -A')
            local('git commit -m "Latest Selenium screenshots for %s"' % (process))
            local('git push -u origin master')
    

    我的承诺中遗漏了什么导致了这里的问题?是否有另一个标志来组合已排队的提交?

    没有要提交的文件,因此git返回一个非零错误代码。这使fabric认为前一个命令失败,因此它中止

    老实说,除非您完全确定git是错的,并且有更改要提交,否则我很容易相信您的脚本实际上根本没有出现故障

    如果确定存在要提交的文件,则应调查更改未被拾取的原因

    如果您希望fabric以更友好的方式退出,可以尝试以下方法:

    from fabric.api import settings import sys def deploy(): process = test() os.chdir('\\Documents and Settings\markw\GitTest') with cd('\\Documents and Settings\markw\GitTest'): with settings(warn_only=True): local('git reset --soft HEAD') local('git pull origin master') local('git add -A') commit = local('git commit -a -m "Latest Selenium screenshots for %s"' % (process)) if commit.failed: print 'Nothing to commit, exiting...' sys.exit(0) else: local('git push -u origin master') 从fabric.api导入设置 导入系统 def deploy(): 过程=测试() os.chdir('\\Documents and Settings\markw\GitTest') 使用cd('\\Documents and Settings\markw\GitTest'): 使用设置(仅警告=真): 本地('git reset--soft HEAD') 本地('git pull origin master') 本地('git add-A') commit=local('git commit-a-m“针对%s的最新Selenium屏幕截图”'%(进程)) 如果提交失败: 打印“无需提交,正在退出…” 系统出口(0) 其他: 本地('git push-u原始主机') 我还向git提交行添加了一个
    -a
    ,因此它还提交了更改和添加的文件


    另外,我不确定os.chdir()行的意义。

    您的路径看起来很奇怪:更好的r'\docs'或'\\docs'谢谢。我仍在努力理解Git和tortoise SVN之间的区别,因此我认为它应该跟踪更新。首先运行的进程在路径
    images\253\View\u Employee\u Use\u Case\1.png
    中生成图像,其中文件夹编号为修订版。这些文件可能会更新,因此如果名称不变,更新的版本会被忽略吗?这是我能想到的唯一问题。
    with cd()
    不会更改目录,因此我得到了
    os.chdir()
    。我本来打算用cd()删除
    ,但还没来得及去做。反应很晚,但正如你所知,
    cd
    上下文管理器用于更改远程计算机上的目录。它对您不起作用的原因是您将它与
    local
    一起使用,而不是
    run
    sudo