Powershell脚本用于导航SVN目录中的文件

时间:2016-04-01 09:02:53

标签: powershell powershell-v2.0 powershell-v3.0

我需要使用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!"
}   
}

1 个答案:

答案 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可以检出单个文件)。

如果您代理cdls,那么它会感觉更加强大,因为您可以实际返回可以管道的项目数组,例如:

ls *.exe | execute   

其中lsproxied并在svn存储库本地路径中执行,而execute使用svn checkout传输管道文件,可能是TEMP并执行它们。