====== Bazaar: Appunti ====== [[http://bazaar-vcs.org/|Bazaar]] è un version control system distribuito. ===== Cosa Installare ===== 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. ===== Comandi Di Base ===== Il comando fondamentale di Bazaar è **bzr**. Per un help dei principali comandi digitare bzr help Una QuickStart Guide può essere scaricata in formato [[http://doc.bazaar-vcs.org/bzr.dev/en/quick-reference/quick-start-summary.pdf|PDF]] o in formato [[http://doc.bazaar-vcs.org/bzr.dev/en/quick-reference/quick-start-summary.png|PNG]] (ne esiste anche un formato [[http://doc.bazaar-vcs.org/bzr.dev/en/quick-reference/quick-start-summary.svg|SVG]] ma poco leggibile). \\ E' anche possibile trovare [[http://doc.bazaar-vcs.org/latest/en/mini-tutorial/index.html|qui]] una breve introduzione in inglese. ==== Il Primo Comando ==== 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 " Per verificare che tutto abbia funzionato correttamente basta ripetere il comando in forma interrogativa bzr whoami ed il sistema risponderà John Doe ==== Nuovo Progetto Locale ==== Per iniziare un nuovo progetto si usa il comando //**init**//. Tale comando ha due modalità operative: * **Specificando il nome di una directory** - Crea una cartella con il nome dato dentro la quale viene messo il progetto. * **Senza specificare il nome di una directory** - Considera la cartella corrente come cartella del progetto. 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. ==== Due Parole su Commit ==== 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. ==== Branch Remoto ==== Creare un branch remoto del progetto con il comando //**push**//. bzr push {Percorso Remoto} Una volta creato il branch remoto è possibile sincronizzarlo: * Manualmente * In automatico 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. ==== Repository Senza Albero ==== 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} ==== Il Comando CheckOut ==== 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. ==== Il Comando Update ==== Per aggiornare il progetto locale dal Repository sul server spostarsi nella cartella locale ed usare il comando //**update**//. bzr update ===== Plugins ===== Bazaar può essere esteso tramite plugins. \\ Un elenco dei plugins con breve descrizione si trova [[http://bazaar-vcs.org/BzrPlugins|qui]]. \\ Molti di questi plugins si trovano su [[https://launchpad.net/|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 ===== [[http://elliotmurphy.com/2007/10/01/using-meld-with-bazaar-extmerge-plugin/|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 & Extmerge ===== [[http://winmerge.org/|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 ===== Esempio: Mettere in Bazaar un Progetto Delphi ===== 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" \\