2016-04-01 1 views
1

Мне нужно перемещаться по файлам из местоположения SVN, а не по местоположению Windows, используя сценарий PowerShell. Если я заменяю путь Windows с помощью SVN-пути, он не работает, у меня ниже рабочий код для местоположения Windows :Скрипт Powershell для навигации по файлам в каталоге SVN

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

AFAIK, поставщик FileSystem не поддерживает каталоги просмотра через HTTP. –

+0

Хорошо, тогда как я могу выбрать и выполнить файлы из SVN. Я не хочу проверять их в каталоге/каталоге Windows. – Daryl

+0

Загрузите их сначала, а затем выполните локально –

ответ

0

Вы не можете выполнить что-либо, что находится на удаленном сервере SVN. Любой способ сделать это должен включать загрузку, по крайней мере, этого файла локально.

При этом, чтобы сделать это полностью прозрачным, вы можете создать скрипт, который зависит от команды svn ls.

Одним из примеров является изменение prompt функции так, что, когда вы cd в какую-нибудь папку будет получить список СВН файлов (в идеале использовать прокси 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 может проверять отдельные файлы).

Он будет чувствовать себя более Powershelly, если прокси cd или ls, как вы можете на самом деле вернуть массив элементов, которые вы можете трубы, чтобы для функции исполнения экземпляра, что-то вроде:

ls *.exe | execute 

где ls является proxied и казнены внутри локального пути репозитория svn и execute использует svn checkout для файлов с каналами, возможно, для TEMP и выполняет их.

 Смежные вопросы

  • Нет связанных вопросов^_^