Subversion jsem jakž takž zvládl, klient TortoiseSVN ještě věci
dokáže usnadnit, takže snad budu moct svůj první verzovací systém
konečně používat. Nyní však stojím před architektonickým rozhodnutím,
jaký layout pro repository zvolit.
Projekt vypadá následovně: mnoho adresářů, mnoho souborů, všechna
aplikační logika zabírá několik málo stovek kB, adresář s obrázky
má asi 70 MB a obsahuje tisíce souborů. Možnosti:
1. Do repository nacpat úplně všechno
+ v repository je přesný obraz stavu webu v daném časovém
okamžiku
- repository bude mít mnoho MB (zhruba tolik, jak je velká sama složka
s projektem)
- operace budou probíhat pomalu
2. Do repository dát pouze aplikační logiku
+ malinké snadno zálohovatelné repository
+ rychlé operace
- pro sestavení obrazu webu v čase T je potřeba provést další
operace (nakopírovat neverzované soubory/adresáře)
3. Do jednoho repository dát aplikační logiku a obrázky dát do
jiného repository
= SVN umí do jednoho adresáře namíchat data z více repository
+ všechno je verzováno
+ aplikační repository zůstává malé, snadno zálohovatelné a
rychlé
+ repository obrázků slouží jako efektivní
„záložiště“
+ konzistentní práce (vše je v SVN, ne každý pes jiná ves)
- ??? (komplikované nápady bývají špatné nápady)
Po uvážení a drobné konzultaci na forum.builder.cz jsem se rozhodl
zvolit možnost 2, přičemž nikdy není pozdě přejít k variantě 3.
Varianta 1 bohužel znamená spálení mostů, repository zůstane velké
i po případném svn delete
obrázků.
Tady je důležité, jestli ty obrázky jsou součástí aplikace (tlačítka, pozadí do GUI…), nebo jestli to jsou uživatelská data.
Jestli je to součást aplikace, tak by určitě měly být v SVN (ale těch asi nebude 70 MB). Protože třeba v javě program nemusí vůbec fungovat, když nenajde ikony (pokud to není nějak zvlášť ošetřené).
Pokud to jsou uživatelská data, tak je velmi vhodné je oddělit od vlastní aplikace, matlat to do jednoho je prasárna. Doporučoval bych vyvíjet aplikaci s pár ukázkovými obrázky, ty mít možná i v SVN. A skutečná data pro ostrý provoz mít někde vedle, třeba v jiném SVN.