sobota, 29 grudnia 2012

Kopiowania kodu bez svn

Jeżeli masz kod źródłowy, który jest podpięty pod system kontroli wersji (svn) to ciężko jest skopiować tylko sam kod bez plików do kontroli wersji. Za pomocą PowerShell można to osiągnąć znacznie szybciej niż ręcznie wykonując kopiowanie .
function Copy-File-Exclude-Svn {
Param(
    [string] $sourceLocation=".",
    [string] $destinationClocation=".\No_SVN"
)
$files = gci -force  -exclude *.svn-base,".svn",".gitignore"  $sourceLocation  | ? {  $_.PSIsContainer -and $_.Length -lt 230 } | gci -recurse

$files | foreach {
        $fileEnding = $_.FullName.Replace($sourceLocation, "");
        $firstItem = $_.FullName;
        $secondItem = $destinationClocation  + $fileEnding ;
        Write-Host "Copy from $firstItem to $secondItem";
        Copy-Item $firstItem $secondItem;
    }
}


Wywołanie kopiowania plików wygląda następująco:
Copy-File-Exclude-Svn 
-sourceLocation "C:\Source\Project1" 
-destinationClocation ""C:\Source\Project1_without_svn"


2 komentarze:

  1. wystarczy wpisac svn export ...

    OdpowiedzUsuń
  2. Bardzo dobra wzmianka. Akurat nie znałem svn export.
    Dzięki bardzo za nią.
    Sprawdziłem jak jest w wydajnością dla projektu, który ma 24,912 plików i zajmuje 2.41GB.
    Svn export potrzebował 35 min, aby wyczyścić z svn, natomiast powyższa funkcja w PS tą samą robotę zrobiła w 11 min.

    OdpowiedzUsuń