我需要使用PowerShell脚本从SVN位置导航文件而不是Windows位置,如果我用SVN路径替换windows路径它不起作用,我有以下工作代码用于windows位置:
function CheckPath($path)
{
Test-Path $path -PathType Container
}
function Navigate()
{
$directory = "C:\Test"
#Instead of above windows path I want to give SVN path as below:
#https://svn.test.local/svn/Files/
$qscomponent="SomeValue"
if (CheckPath -path $directory)
{
Write-Host "Executing scripts from $directory"
Get-ChildItem $directory -Filter LTR*.sql | Foreach-Object -Process { RunScript -comp $component -file $_.FullName }
}
else
{
Write-Host "Invalid component: the path does not exist!"
}
}
答案 0 :(得分:0)
您无法执行远程SVN服务器上的任何内容。任何方式都必须包括在本地下载至少该文件。
也就是说,为了使其完全透明,您可以创建依赖于svn ls
命令的脚本。
一个示例是更改prompt
函数,以便当您cd
进入某个文件夹时,它将获取svn文件列表(理想情况下使用代理到set-location
)但提示更容易。假设您有.svn
个文件夹但没有文件(对于此集depth to empty
when doing checkout)
function prompt() {
$lastCmd = h | select -Last 1 -expand CommandLine
if ($lastCmd -match '^cd ') {
$x = svn info
if ($x -ne $null) {
svn ls | % {Write-Host $_}
}
}
"PS $pwd>"
}
当您输入文件夹时,此提示功能将列出svn远程存储库中的所有文件。您可以创建一个简单的powershell函数,它将下载所需的文件并执行它(svn可以检出单个文件)。
如果您代理cd
或ls
,那么它会感觉更加强大,因为您可以实际返回可以管道的项目数组,例如:
ls *.exe | execute
其中ls
是proxied并在svn存储库本地路径中执行,而execute
使用svn checkout传输管道文件,可能是TEMP并执行它们。