Egy ideje hanyagoltam a verziókezelést. Tudom, fekete pont. De most rendbetettem ezt is, és a közben gyűjtött tapasztalatokból most megosztanék egyet:
Új repository létrehozása rövid leállással
Ha az ember új repository-t akar létrehozni, és megnézi a dokumentációkat, mindenhol ezt fogja látni:
- » svnadmin create PATH-0
- » svn import PATH-1 URL -m "Initial import"
- » svn checkout URL PATH-2
Első parancs: létrehozzuk a repository-t a szerveren a PATH-0 könyvtárban. Második: beimportáljuk a kliens gépen a kezdeti fájlokat a PATH-1 könyvtárból. Harmadik: lekérjük az SVN-től a repo aktuális tartalmát (rev.1) a kliensen a PATH-2 könyvtárba.
Ez szép és jó, a baj csak az, hogy a kliensen a PATH-1 és a PATH-2 különböző kell legyen. Általában nem is lenne ez nagy baj, a fenti művelet végén PATH-1-et töröljük, PATH-2-t pedig átmozgatjuk PATH-1-re, ezzel elérve, hogy az eredeti fájlok, az eredeti helyen, már working copy-ként működjenek.
De ha egy éles webszerveren akarjuk a használat alatt álló fájlokat bevonni a verziókezelésbe, akkor ez a módszer nem működik. Sajnos az svn checkout parancs nem hajalndó felülírni már meglévő fájlokat, ezért PATH-1 szigorúan különböző PATH-2-től. A fenti lépéssorozattal csak úgy oldható meg a probléma, ha egy rövid időre leállítjuk az alkalmazást.
Új repository létrehozása leállás nélkül
Szerencsére találtam egy megoldást, amivel leállás nélkül be lehet vonni fájlokat a verziókezelésbe:
- » svnadmin create PATH-0
- » svn checkout URL PATH-1
- » svn add PATH-1/*
- » svn commit -m "Initial import"
A trükk mindössze annyi, hogy a repo létrehozása után, azonnal lekérjük az SVN-től az aktuális állapotot (rev.0)! Ezáltal lesz egy teljesen üres working copy a kliens gépen. Ezután egyenként hozzáadjuk azokat a fájlokat, amelyeket be akarunk vonni a verziókezelésbe, végül pedig egy commit paranccsal elkövetjük az kezdő importálást.
Ráadásul, így nem kötelező a teljes könyvtárat bevinni SVN-be, több svn add utasítással, lehet szelektálni is.
Mindössze ennyi, nekem hasznos volt.