我创建了一个powershell脚本,它作为构建定义的第一步运行,它获取最新代码并标记分支以及执行GitVersion.exe / updateassemblyinfo。
我现在遇到的问题是TFS构建定义创建了一个分离的头(分支?),每当我尝试执行git checkout master时,它在输出中显示为错误。
2017-12-20T02:59:28.3245551Z运行' git clean -fdx'在D:\ agent_work \ 87 \ s。
2017-12-20T02:59:28.3713306Z运行' git reset - hard HEAD'在D:\ agent_work \ 87 \ s。
2017-12-20T02:59:28.4337848Z HEAD现在是00382dd Dummy change2
2017-12-20T02:59:28.4337848Z开始获取...
2017-12-20T02:59:28.6209313Z将00382dd7601ab49b146240338e3f89e70aae2ece检出D:\ agent_work \ 87 \ s
2017-12-20T02:59:28.6677321Z在提交00382dd7601ab49b146240338e3f89e70aae2ece
已检出分支机构refs / heads / master for repository ABN2017-12-20T02:59:28.6677321Z commit = 00382dd7601ab49b146240338e3f89e70aae2ece
2017-12-20T02:59:28.6677321Z离开TfsGitSourceProvider.PrepareRepositoryAsync
2017-12-20T02:59:28.8081365Z正在运行的任务
2017-12-20T02:59:28.8237446Z启动任务:Powershell:Build.ps1
2017-12-20T02:59:28.8549329Z。 ' d:\ agent_work \ 87 \ S \ Build.ps1'
2017-12-20T02:59:28.8705393ZC:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command" try {[System.Security。 Cryptography.ProtectedData] | Out-Null} catch {Write-Verbose'添加组合:System.Security' ; Add-Type -AssemblyName' System.Security' ; [System.Security.Cryptography.ProtectedData] | Out-Null};调用-表达-Command([System.Text.Encoding] :: UTF8.GetString([System.Security.Cryptography.ProtectedData] ::撤消([System.Convert] :: FromBase64String(' AQAAANCMnd8BFdERjHoAwE / CL + sBAAAArGybdmeqjkeRrRCzDg34RQAAAAACAAAAAAADZgAAwAAAABAAAAARQNIZ8ZSSCdvKkC9ig9FQAAAAAASAAACgAAAAEAAAAA05pop9sZqolQMnXBaYCcEoAAAAJWiIi4dluseSGAh6baRpqKRCAen5vNpoXE1rso5mC6ionSeRDREhsRQAAAAulpIkem7g6hB4in0HmeadOg7cOw =='),[System.Convert] :: FromBase64String(' XRQnTZZ + 4fqW37oX7nUNSA =='),[System.Security.Cryptography.DataProtectionScope] :: CurrentUser))); if(!(Test-Path -LiteralPath变量:\ LastExitCode)){Write-Verbose'最后退出代码未设置。' } else {Write-Verbose(' $ LastExitCode:{0}' -f $ LastExitCode);退出$ LastExitCode}"
2017-12-20T02:59:28.8705393Z执行以下powershell脚本。 (workingFolder = D:\ agent_work \ 87 \ s)
2017-12-20T02:59:28.8705393Z D:\ agent_work \ 87 \ s \ Build.ps1
2017-12-20T02:59:30.1653526Z您的分支机构是最新的&origin; /'。
2017-12-20T02:59:30.2277683Z ## [错误]切换到分支机构'
2017-12-20T02:59:30.2277683Z已经是最新的。
2017-12-20T02:59:30.2277683Z成功
2017-12-20T02:59:30.2433610Z ## [错误]进程已完成,退出代码为0,并且已将1个错误写入错误流。
2017-12-20T02:59:30.2745493Z完成任务:PowerShell
2017-12-20T02:59:30.2745493Z ## [错误]任务PowerShell失败。这导致作业失败。查看任务的日志以获取更多详细信息。
以下是发生错误的powershell脚本的一部分:
[CmdletBinding()]
param()
Push-Location $PSScriptRoot
& git fetch origin
& git checkout master
& git merge origin/master --ff-only
Pop-Location
Write-Host
Write-Host "Success" -ForegroundColor Green
有什么想法吗?
答案 0 :(得分:1)
由于git即使成功也会写入stderr(例如同步时拉取),这会处理这些情况并写出输出的第一行,这通常是你需要知道的