Bazaar è un version control system distribuito.
L'installazione è semplice, basta scaricare ed installare il file bzr-setup-[ultimaversione].exe.
Nota: Bazaar è interamente realizzato in Python. Il file di installazione esiste in 2 versioni differenti, un “completa” ed una che richiede la prenza di Python. Si consiglia di scaricare quella completa.
Dalla sezione dei plugins scaricare ed installare qbzr-setup-[ultimaversione].exe che aggiunge un minimo di interfaccia grafica ai comandi.
Nota: Dalla relase 1.6 viene distribuita con Bazaar anche una versione rudimentale del TortoiseBZR.
Il comando fondamentale di Bazaar è bzr. Per un help dei principali comandi digitare
bzr help
Una QuickStart Guide può essere scaricata in formato PDF o in formato PNG (ne esiste anche un formato SVG ma poco leggibile).
E' anche possibile trovare qui una breve introduzione in inglese.
Prima di iniziare è necessario istruire Bazaar su chi siamo. A meno di esigenze particolari, questa operazione in genere viene eseguita una sola volta.
bzr whoami "John Doe <john.doe@gmail.com>"
Per verificare che tutto abbia funzionato correttamente basta ripetere il comando in forma interrogativa
bzr whoami
ed il sistema risponderà
John Doe <john.doe@gmail.com>
Per iniziare un nuovo progetto si usa il comando init. Tale comando ha due modalità operative:
bzr init [Dir Progetto]
Se la cartella è stata creata da Bazaar entrarvi.
cd [Dir Progetto]
Aggiungere i files desiderati con il comando add. Usando solo add senza specificare altri parametri vengono presi tutti files incluse le sub-directory.
bzr add [Files]
Committare le modifiche con il comando commit. Il parametro -m consente di specificare un commento per questo commit.
bzr commit -m "Commento"
Ogni commit incrementa il numero di revisione su Bazaar.
Il parametro -m del comando commit è opzionale, se non viene specificato il commento Bazaar chiederà di inserirlo prima di committare. Un eventuale diniego renderà impossibile l'operazione. In alternativa, se le estensioni qbzr sono state installate, può essere usato il comando qcommit che permette di eseguire la commit graficamente.
Creare un branch remoto del progetto con il comando push.
bzr push {Percorso Remoto}
Una volta creato il branch remoto è possibile sincronizzarlo:
Per sincronizzarlo manualmente è necessario, dopo un commit, chiamare push.
bzr commit -m "Commento"
bzr push {Percorso Remoto}
Per sincronizzarlo in automatico utilizzare il comando bind dopo il primo push.
bzr bind {Percorso Remoto}
In questo modo, ogni commit sul progetto in locale viene riportato anche sul branch remoto.
E' possibile specificare a Bazaar che il Repository è senza albero. Questo significa che Bazaar creerà un Repository contenente solo i suoi files di controllo.
bzr init-repo --no-trees {Percorso del Repository}
Per portare in locale un progetto presente sul server e poter iniziare a lavorarci usare il comando checkout.
bzr checkout {Percorso del Repository sul Server}
Il percorso del Repository può essere un'unità di rete od un URL. Nell'esempio seguente un indirizzo in ssh.
bzr checkout bzr+ssh://john.doe@bazaar.launchpad.net/~john.doe/+junk/myproject
L'esempio precedente richiede la password ssh. E' possibile eseguire più operazioni senza bisogno di reinserire tale password seguendo il procedimento seguente:
ssh-agent bash ssh-add
Inserire la password e ricordarsi di non chiudere la shell.
Per aggiornare il progetto locale dal Repository sul server spostarsi nella cartella locale ed usare il comando update.
bzr update
Bazaar può essere esteso tramite plugins.
Un elenco dei plugins con breve descrizione si trova qui.
Molti di questi plugins si trovano su Launchpad, un repository di codice open source che usa come sistema di versioning proprio Bazaar.
Una volta scaricati nella cartella dei plugins vengono compilati automaticamente al primo utilizzo.
Extmerge è un plugin che consente di utilizzare un utility di terze parti per risolvere i conflitti. Per installare Extmerge su Windows procedere come segue (per Linux il procedimento è analogo.):
cd %APPDATA%\bazaar\2.0\plugins bzr branch lp:bzr-extmerge extmerge
Extmerge prevede la possibilità di leggere dal file di configurazione dei Bazaar il template per l'uso del software esterno.
# # Add this line to your ~/.bazaar/bazaar.conf # # external_merge = 'meld-helper %r %b %t %o'
WinMerge è un programma Open Source per la comparazione ed il merging di files sotto windows. Per poterlo usare con Extmerge basta installarlo, aggiungere la seguente riga al path
%programfiles%\winmerge
e modificare il file bazaar.conf coem segue
external_merge = 'winmerge %%t %%o %%r %%b'
Il tutto può essere facilmente automatizzato tramite questo batch
@echo off C: cd %APPDATA%\bazaar\2.0\plugins bzr branch lp:bzr-extmerge extmerge cd .. Echo external_merge = 'winmerge %%t %%o %%r %%b' >> bazaar.conf Echo. Echo --------------------------------- Type bazaar.conf Echo --------------------------------- Echo. Echo Ricordati di mettere WinMerge nel Path !!! Echo. Pause
Iniziamo da un breve elenco delle estensioni minime da aggiungere.
| Estensione | Descrizione |
|---|---|
| *.pas | Units |
| *.dfm | Forms |
| *.dpr | Project |
| *.dpk | Package |
| *.cfg | Compiler Config |
| *.dof | Version, Ide, ecc… |
| *.res | Resources |
| *.tlb | Type library for COM |
| *.dcr | Resources for Components |
| Specifici di Delphi 2007 | |
| *.dproj | Project |
| *.dproj.local | Project |
| *.identcache | ??? |
Supponiamo di trovarci già all'interno della directory del progetto.
Le operazioni possono essere eseguite in sequenza a mano oppure è possibile creare un batch da eseguire nella directory del progetto.
bzr init bzr add *.pas bzr add *.dfm bzr add *.dpr bzr add *.dof bzr add *.res bzr add *.cfg bzr add *.bpg bzr add *.bpk bzr add *.dcr bzr add *.tlb bzr commit -m "Import iniziale"