Subversion tipp: kezdő import leállás nélkül

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:

  1. » svnadmin create PATH-0
  2. » svn import PATH-1 URL -m "Initial import"
  3. » 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:

  1. » svnadmin create PATH-0
  2. » svn checkout URL PATH-1
  3. » svn add PATH-1/*
  4. » 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.