2

我正在写一个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

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

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

4

2 回答 2

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 回答
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 团队以找到合适的解决方案。最好的方法是什么?
于 2012-12-10T10:32:58.427 回答