section id="rails.svn.create-project" xreflabel="Založení nového projektu"
FIXME:přepsat.
Při zakládání nového projektu v Subversion je třeba dodržet několik základních pravidel a doporučených postupů. Pokud se jimi budeme řídit, můžeme pak snadno realizovat jednotlivé větvě.
Nejdříve uvedu několik předpokladů ze kterých vychází následující postup. Svn není realizováno svn serverem ale používám lokální souborový přístup. Adresář v kterém jsou uloženy jednotlivé projekty se jmenuje /var/lib/svn
. Zkušební projekt se kterým budu pracovat se jmenuje videoteka
. Můj účet na počítači se jmenuje radek
.
Takže začneme vytvořením projektu v Subversion
#
mkdir -p /var/lib/svn/videoteka
#
chownradek
:radek
/var/lib/svn/videoteka
$
svnadmin create /var/lib/svn/videoteka
Vytvoříme si někde v pracovním prostoru adresářovou strukturu.
$
mkdir -p /tmp/videoteka
/trunk$
mkdir /tmp/videoteka
/tags$
mkdir /tmp/videoteka
/branches
Vytvořenou prázdnou strukturu můžeme předat svn.
$
svn import -m "Vytvoření prázdného projektu videoteka" /tmp/videoteka file:///var/lib/svn/videoteka
Adding /tmp/videoteka/trunk Adding /tmp/videoteka/branches Adding /tmp/videoteka/tags Committed revision 1.
Nyní si do pracovního prostoru kde pracujeme se zdroji,FIXME:, načteme nově vytvořenou prázdnou verzi a vygenerujeme rails aplikaci.
$
svn checkout file:///var/lib/svn/videoteka
/trunk $HOME/work/videoteka
Checked out revision 1.
$
rails --svn $HOME/work/videoteka
svn: warning: '.' is not a working copy svn: warning: '.' is not a working copy exists create app/controllers
⋮
Pokud používáme jinou databázi než standardní sqlite3, můžem již při generování aplikace zadat -d postgresql
. Vytvořená kostra má pak konfigurační soubor databází připravený pro námi uvedenou databázi.
V takto vytvořeném Rails projektu provedem několik úprav. Určitě nebudeme chtít aby v Subversion byly uloženy deníky.
$
cd $HOME/work/videoteka$
svn remove --force log/*.logD log/development.log D log/production.log D log/server.log D log/test.log
$
svn propset svn:ignore "*.log" log/property 'svn:ignore' set on 'log'
Stejným způsobem se zbavíme adresáře tmp v úložišti Subversion, a celý projekt „comitneme“ do repository.
$
svn remove --force tmp/*D tmp/cache D tmp/pids D tmp/sessions D tmp/sockets
$
svn propset svn:ignore "*" tmp/property 'svn:ignore' set on 'tmp'
$
svn commit
Dalším souborem, který ba neměl být archivován je konfigurace přístupu k databázím. Důvodem jsou přístupová hesla k databázím jenž jsou v tomto souboru uvedena. Pro praktické řešení tedy přjmenujeme původní konfigurační soubor jenž v tuto chvíli neobsahuje hesla, tento poté upravíme aby vyhovoval námi používané konfiguraci databází s tím že v něm neuvedeme přístupová hesla a jména k databázím. To nám dovolí velmi snadno vytvořit „ostrý“ konfigurační soubor jen skopírováním a doplněním hesel a jmen.
$
svn move config/database.yml config/database.exampleA config/database.example D config/database.yml
$
svn propset svn:ignore 'database.yml' config
U starší verze rails nefungoval správně přepínač --svn
při generování aplikace.
$
svn checkout file:///var/lib/svn/addressbook/trunk /tmp/addressbook/rev1 Checked out revision 1.$
rails /tmp/addressbook/rev1$
cd /tmp/addressbook/rev1$
for f in $(svn status|grep ^?|awk '{print $2}'); do svn add $f; done$
svn remove --force log/*.log$
svn propset svn:ignore "*.log" log/$
svn commit -m "Rails skeleton"
FIXME:zrušit.
Protože uvedený postup nefunguje správně, používám nyní postup jiný. Nejdříve jako administrátor vytvořím adresář pro repository, a učiním sebe jako vývojáře vlastníkem tohoto adresáře. Pracuji na svém notebooku sám a rovněž vyvýjím aplikace sám. Nepotřebuji tedy v této chvíli řešit spolupráci v týmu.
$
suPassword:
roots password
#
mkdir -p /var/lib/svn/project
#
chown radek:radek /var/lib/svn/project
#
exit exit