如何在powershell中捕获git错误消息?

时间:2012-12-05 13:39:50

标签: git powershell psake

我正在写一个psake脚本。其中一个任务从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

看起来错误消息的其余部分在某处被切断,所以我实际上无法找到问题的原因。

有关如何查看完整错误消息的任何想法?

2 个答案:

答案 0 :(得分:0)

您是否尝试过Out-File作为日志机制?

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

如果您在 pure Powershell中执行“git pull”,则不需要“exec”。你有没有“exec”尝试过吗?像这样:

git pull origin somebranch

我相信您的问题是PSAKE截断您的结果消息。尝试使用纯PowerShell,看看返回的是什么?我甚至都不知道这是否可能......

答案 1 :(得分: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();

我有一个理论,但不能证明它(还):

  • 有三个可能的原因:powershell,psake,git
  • 我可以通过直接从powershell
  • 调用git来排除psake
  • 从PowerShell调用时,所有其他命令行工具都会正确输出消息,以便排除PowerShell
  • 我怀疑问题是git如何向控制台输出消息
  • 下一步是联系PowerShell团队以找到合适的解决方案。最好的方法是什么?