47.21.1. Založení nového projektu v Subversion

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
# chown radek: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

Poznámka

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/*.log
D         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.example
A         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.

$ su
Password:roots password
# mkdir -p /var/lib/svn/project
# chown radek:radek /var/lib/svn/project
# exit
exit
Licence Creative Commons
Tento dokument Ruby, jehož autorem je Radek Hnilica, podléhá licenci Creative Commons Uveďte autora-Nevyužívejte dílo komerčně-Zachovejte licenci 3.0 Česká republika .