2

私はpsakeスクリプトを書いています。タスクの 1 つは、Github がホストするリポジトリからファイルをプルします。

Framework "4.0"
$ErrorActionPreference = "stop"

formatTaskName "`n##------ {0} ------##`n"

task DeployToLocalDevelopmentEnvironment {
    # other commands

    exec { git pull origin somebranch } # this is the line that fails

    # other commands
}

pullコマンドは次のメッセージで失敗します。

https://github.com/account_name/project_nameから

エラーメッセージの残りの部分がどこかで途切れているようで、実際に問題の原因がわかりません。

完全なエラー メッセージを表示する方法について何か考えはありますか?

4

2 に答える 2

0

なぜ起こっているのかまだわかりませんが、回避策を見つけました:

$processStartInfo = new-object system.diagnostics.processStartInfo
$processStartInfo.workingDirectory = (get-location).path
$processStartInfo.fileName = "git"
$processStartInfo.arguments = "pull origin $branch_name"
$processStartInfo.useShellExecute = $false

$process = [system.diagnostics.process]::start($processStartInfo);
$process.waitForExit();

私には理論がありますが、それを証明することはできません(まだ):

  • 3つの潜在的な原因があります:powershell、psake、git
  • PowerShellから直接gitを呼び出すことで、psakeを除外することができました
  • 他のすべてのコマンドラインツールは、PowerShellから呼び出されたときにメッセージを正しく出力するため、PowerShellは除外されます
  • 問題はgitがコンソールにメッセージを出力する方法にあると思います
  • 次のステップは、PowerShellチームに連絡して適切な解決策を見つけることです。それを行うための最良の方法は何ですか?
于 2012-12-10T10:32:58.427 に答える
0

ログメカニズムとしてOut-Fileを試しましたか?

exec { git pull origin somebranch | Out-File C:\output.txt }

純粋なPowershellで「git pull」を実行する場合、「exec」は必要ありません。「exec」なしで試しましたか?そのようです:

git pull origin somebranch

あなたの問題は、結果メッセージを切り捨てる PSAKE にあると思います。純粋なpowershellで試してみて、何が返されるかを確認してください。それが可能かどうかさえわかりません...

于 2012-12-05T16:01:45.957 に答える