Gestire le modifiche a un progetto Rails con Bazaar e Olive
Diamo uno sguardo a Bazaar (il VCS di Ubuntu) e a come utilizzarlo per gestire un progetto fatto con Ruby on Rails.
Bazaar
Si tratta di uno strumento molto utile per gestire le modifiche fatte ai file (VCS) e le sue caratteristiche principali sono l'essere:- distribuito: si possono apportare delle modifiche a un progetto altrui e gestire le revisioni come se si fosse proprietari.
- integrato: si integra con Nautilus ed è estensibile con dei plugin
- semplice: viene utilizzato anche da chi usa un'altro VCS (es SVN) per fare delle modifiche locali
Riunificazione di 2 rami locali: myapp e myapp.experimental
Installazione
Potete installarlo selezionando bzr e bzr-gtk da Synaptic o conapt-get install bzr bzr-gtkSe volete avere le ultime versioni disponibili aggiungete questo repository
deb http://bazaar-vcs.org/releases/debs/feisty ./
Iniziamo
Per chi non lo sapesse un progetto Rails non contiene solo codice sorgente, ma anche file di configurazione, file temporanei, database, che ovviamente non vogliamo tener traccia nel VCS.Questo utilizzo potrebbe sembrare specifico, ma problematiche molto simili sono comuni a molti altri contesti.
rails myapp
cd myapp
bzr init # Crea la cartella .bzr
bzr add # Aggiunge ricorsivamente i file presenti
script/server # Parte il server Rails, CTRL+C
bzr status # Vengono creati dei nuovi file "inaspettati"
...
unknown:
config/lighttpd.conf
log/fastcgi.crash.log
log/lighttpd.access.log
log/lighttpd.error.log
tmp/cache/index.html-gzip-627926-7552-1183916515
..
Per ignorare questi ed altri file, la via migliore è creare un file .bzrignore così:
gedit .bzrignore
config/database.ymlEsiste anche il comando bzr ignore <parametri>, ma ve lo sconsiglio perché crea doppioni e confusione. Modificate direttamente .bzrignore e controllate che i file vengano ignorati.
config/lighttpd.conf
log/*.log
tmp/cache/*
tmp/pids/*
tmp/sessions/*
tmp/sockets/*
db/*.db # Nel caso usiate un db SQLite
db/schema.rb # Verrà generato in seguito
vendor/rails # Se utilizzate Rails Edge
bzr ignored # e/o che non ci siano in bzr status
Una volta controllato che non ci sia spazzatura siete pronti a fare il commit, in questo caso il primo.
bzr commit -m 'First commit'Procedete in questo modo, per tutte le modifiche che fate al codice, magari aggiornando il file .bzrignore all'occorrenza.
script/generate controller pagesSe non vi appassiona digitare tutte le volte i comandi potete utilizzare anche l'ottima GUI Olive.
bzr add
bzr commit -m 'Aggiunto controller pages'
added app/controllers/pages_controller.rb
added app/helpers/pages_helper.rb
added app/views/pages
added test/functional/pages_controller_test.rb
Committed revision 2.
Sempre tramite l'intefaccia grafica potete gestire con una facilità disarmante diversi rami sperimentali per per poi unirli in seguito.
Per esempio potete provare a fare creare un nuovo ramo (push), fare delle modifiche nel nuovo ramo e reimportarle(merge) in quello ufficiale.
Annotate, per vedere le modifiche fatte sul file in che ramo e da chi
In caso di rami in conflitto usate meld (apt-get install meld) per sistemare il file
Altre considerazioni su Bazaar e Rails e Capistrano