Az SVN verziókezelő rendszernek van az a kellemetlen tulajdonsága, hogy a projektünk minden egyes könyvtárába létrehoz egy ‘.svn’ nevű állományt, esetemben 789 darabról volt szó. De hogyan szabaduljunk meg ezektől, ha már nem szeretnénk SVN-t használni?
A minap elő kellett vennem egy régi projektemet továbbfejlesztésre, és sajnálattal tapasztaltam, hogy az új SVN nem hajlandó működni a régi repositoryval, mondván az túl régi neki. Természetesen van lehetőség felfejleszteni a régi repót újra, az erre létesített ‘svn upgrade’ paranccsal, azonban nekem ez is hibával elszállt. Elkezdhettem volna keresgélni mi a gond, de én türelmetlen típusú ember lévén inkább megszabadultam az SVN-től.
Rendben, de hogyan szabaduljak meg a sok .svn mappától? Kézzel egyesével végigmenni mind a 789 könyvtáron elég kellemetlen feladat volna, nincs “kedvem” hozzá. 🙂
Aki rendelkezik alapszintű Unix ismeretekkel (mert pl. járt a Linux alapozó tanfolyamunkon), annak a következő sor nem fog sok meglepetést okozni:
find ./ -name ".svn" | xargs rm -rf
Ez az egyszerű sor annyit csinál, hogy a find program segítségével megkeresi az összes ‘.svn’ nevű mappát az aktuális könyvtár alatt, majd belepipe-olja a törlést végző programba. Az -r kapcsoló azért kell, mivel könyvtárról van szó, az -f pedig azért, hogy biztosan ne kérdezősködjön törlés előtt, csak csinálja.
Mi a helyzet, ha Windows alatt vagyunk? Akkor marad a Powershell, amely sokkal kevésbé ismert, nézzük meg, hogyan néz ez ki PS alatt:
Get-ChildItem . -Recurse -Include .svn | Remove-Item -Recurse -Force
Alapvetően ugyan arról van szó, csak más utasításokat kell használni. Annyi a különbség, hogy a Get-ChildItem alapból nem rekurzív, így itt explicit meg kell adni a finddal szemben.