我正在尝试使用 Powershell 脚本自动执行分支操作,如下所示:
$fromUrl = 'svn://some/from/url'
$toUrl = 'svn://some/to/url.'
[Array]$arguments = "copy", "-q", $fromUrl, $toUrl, "-m", "New branch"
echo "Branching from: " $fromUrl
echo "Branching to: " $toUrl
$copyResult = & svn $arguments
echo "Result: " $copyResult
echo "Switching to: " $toUrl
$switchResult = svn switch -q $toUrl ho-til-test
echo "Result: " $switchResult
只要对 SVN 的调用有效,这应该可以正常工作;然而,我想要的是捕获结果,并在调用失败时停止脚本并显示错误消息。上面的脚本显然因为 URL 无效而失败,但结果没有在
$copyResult
中捕获和 $switchResult
,正如我所料。结果输出如下;状态消息显示在我的两个结果变量的输出之前,它们是空的:PS > .\PsExampleForSO.ps1
Branching from:
svn://some/from/url
Branching to:
svn://some/to/url.
svn: E731001: Unable to connect to a repository at URL 'svn://some/from/url'
svn: E731001: Unknown hostname 'some'
Result:
Switching to:
svn://some/to/url.
svn: E731001: Unable to connect to a repository at URL 'svn://some/to/url.'
svn: E731001: Unknown hostname 'some'
Result:
PS >
这与我正在进行的其他一些调用不同,在这些调用中,可以在变量中捕获输出结果并稍后检查。
对于这两个调用,有什么方法可以实现这一点吗?
最佳答案
外部命令的退出代码存储在 $LastExitCode
中环境变量。如果您希望脚本在出现错误时停止,您应该检查该变量:
$copyResult = & svn $arguments
if ($LastExitCode -ne 0) {
exit
}
不过,我建议在日志文件而不是变量中捕获常规和错误输出:
& svn $arguments >'C:\path\to\output.log' 2>'C:\path\to\error.log'
if ($LastExitCode -ne 0) {
exit
}
关于svn - 如何检查从 Powershell 调用 SVN 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21625452/