0

Fabric を使用して ANT タスクを実行し、GitHub にアップロードしています。スクリプトは機能しましたが、一貫性がないため、その理由を理解するのは困難です。

ここで、Fabric のプロセスは次のようになっていると読んでいます。

  1. git add
  2. git commit
  3. git push

しかし、私はこの出力を見続けています。

# 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')

ここで問題を引き起こす私のコミットには何が欠けていますか? キューに入っているコミットを結合する別のフラグはありますか?

4

1 に答える 1

2

コミットするファイルがないため、git はゼロ以外のエラー コードを返しています。これにより、ファブリックは前のコマンドが失敗したと認識し、中止します。

正直なところ、git が間違っていること、およびコミットする変更があることを完全に確信していない限り、スクリプトが実際にはまったく機能していないと信じたくなりました。

コミットするファイルがあることが確実な場合は、変更が反映されない理由を調査する必要があります。

fabric をより使いやすい方法で終了させたい場合は、次のような方法を試すことができます。

fabric.api インポート設定から
システムをインポート

デフ展開():
    プロセス = テスト()
    os.chdir('\\Documents and Settings\markw\GitTest')
    cd('\\Documents and Settings\markw\GitTest'):
        設定あり (warn_only=True):
            local('git reset --soft HEAD')
            local('git pull オリジン マスター')
            local('git add -A')
            commit = local('git commit -a -m "%s の最新の Selenium スクリーンショット"' % (プロセス))
            commit.failed の場合:
                print 'コミットするものがありません。終了します...'
                sys.exit(0)
            そうしないと:
                local('git push -u オリジンマスター')

また、あなたの git commit 行に a を追加した-aので、追加されたファイルだけでなく変更もコミットしています。

また、あなたの os.chdir() 行のポイントがわかりません。

于 2012-04-23T13:32:31.377 に答える