Subversion speichert seine Metadaten in .svn Verzeichnissen, die einen Bug in Webapplikationen bei Visual Studio 2003 triggern. Man muss einmal das Projekt ohne die .svn Verzeichnisse laden, danach erhält man bei jedem weiteren Öffnen zwar eine Fehlermeldung, das macht aber nichts, alle wesentlichen Daten liegen dann bereits unter C:\Dokumente und Einstellungen\username\VSWebCache\. Insbesondere beim neueinrichten eines Rechners vom Backup eines anderen Rechners kann das extrem lästig werden.

Wie immer ist der Retter in der Not die Powershell.

get-childitem -recurse -force -ErrorAction SilentlyContinue | where { $_.Name -eq ".svn" } | foreach { Rename-Item $_.FullName "_svn" }

get-childitem holt alle Dateien im aktuellen Verzeichnis und, dank -recurse, auch aus allen unterhalb. .svn wird standardmäßig als versteckt betrachtet, deshalb ist -force notwendig. Nach dem Umbenennen ist es natürlich nicht mehr möglich das Verzeichnis rekursiv zu durchsuchen, dies führt zu einer Fehlermeldung. Da .svn aber keiene .svn Ordner enthalten, schalten wir die Fehlerbehandlung für get-childitem einfach mit dem Standardparameter ErrorAction ab.

where filtert die Pipeline auf .svn Ordner.

Foreach führt dann das Rename auf dem absoluten Pfad der .svn Ordner aus. 

Für die Rückrichtung müssen wir dann nur .svn und _svn vertauschen. (hier mal in Kurzschreibweise):

gci -r -fo -ErrorAction SilentlyContinue | ? { $_.Name -eq "_svn" } | %{ Rename-Item $_.FullName ".svn" }

Advertisements