2012-04-23 11 views
0

Fabricを使用してANTタスクを実行しています&次にGitHubにアップロードします。スクリプトは機能していますが、一貫しているわけではありません。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') 

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

+0

あなたはパスが奇妙に見えます:より良いr '\ docs'または '\\ docs' – guettli

答えて

2

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

間違いなくgitが間違っていると確信していて、コミットする変更がある場合は、スクリプトが実際に誤動作しているとは思えません。

コミットするファイルがあることが確かな場合は、変更内容が選択されていない理由を調べる必要があります。あなたは、よりフレンドリーな方法で終了するには、ファブリックを希望した場合

、あなたはこのような何かを試すことができます:それはまた、変更をコミットですので

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

を私はまた、あなたのgitに-a行をコミット追加しました追加されたファイルが含まれます。

また、私はあなたのos.chdir()行のポイントについてはわかりません。

+0

ありがとう。私はまだGitとTortoise SVNの違いを理解しようとしているので、アップデートを追跡するべきだと思います。最初に実行されるプロセスは、 'images \ 253 \ View_Employee_Use_Case \ 1.png'のパスにイメージを生成します。ここで、フォルダ番号はリビジョンです。これらのファイルは更新される可能性がありますので、名前が変更されない場合、更新されたバージョンは無視されますか?それは私が考えることができる唯一の問題です。 –

+0

'with cd()'はディレクトリを変更しないので、 'os.chdir()'を持っているのです。私は 'with cd()'を削除しようとしていましたが、まだまだ丸められませんでした。 –

+1

遅れていますが、 'cd'コンテキストマネージャはリモートマシンのディレクトリを変更するためのものです。それがあなたのために働かなかったのは、 'run'や' sudo'の代わりに 'local'を使っているからです。 – majackson

関連する問題