2016-04-01 5 views
1

Ich muss Dateien von einem SVN-Speicherort anstelle eines Windows-Speicherort mit PowerShell-Skript navigieren, wenn ich Windows-Pfad mit SVN Pfad ersetzen funktioniert es nicht, ich habe unter Arbeitscode für Windows-Speicherort :Powershell-Skript zum Navigieren von Dateien im SVN-Verzeichnis

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, der FileSystem-Provider unterstützt das Durchsuchen von Verzeichnissen über HTTP nicht. –

+0

Ok, wie kann ich dann Dateien von SVN auswählen und ausführen? Ich möchte sie nicht auf Windows-Speicherort/Verzeichnis auschecken. – Daryl

+0

Laden Sie sie zuerst herunter und führen Sie sie dann lokal aus –

Antwort

0

Sie können nichts ausführen, das sich auf einem Remote-SVN-Server befindet. Jeder Weg, um dies zu tun, muss beinhalten, mindestens diese Datei lokal herunterzuladen.

Das gesagt, um dies völlig transparent zu machen, könnten Sie Skript erstellen, das auf svn ls Befehl angewiesen ist.

Ein Beispiel dafür ist prompt Funktion zu ändern, so dass, wenn Sie cd in einige Ordner wird es die SVN-Dateiliste (idealerweise Proxy set-location verwenden) erhalten, aber prompt ist einfacher. Angenommen, Sie haben .svn Ordner aber keine Dateien (für diesen Satz 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>" 
} 

Diese Aufforderung Funktion listet alle Dateien auf SVN-Remote-Repository, wenn Sie den Ordner ein. Sie könnten eine einfache Powershell-Funktion erstellen, die die gewünschte Datei herunterlädt und ausführt (svn kann einzelne Dateien auschecken).

Es wird mehr fühlen Powershelly, wenn Sie Proxy cd oder ls wie Sie können dann wieder tatsächlich Reihe von Positionen, die Sie Rohr zum Beispiel Ausführungsfunktion, so etwas wie:

ls *.exe | execute 

wo ls ist proxied und ausgeführt innerhalb des Svn Repository lokalen Pfades und execute verwendet Svn Checkout für Piped-Dateien, vielleicht zu TEMP und führt sie aus.

Verwandte Themen