<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Aldolat.it &#8212; Post con tag Subversion</title>
        <link>https://www.aldolat.it/tags/subversion/</link>
        <description>Ultimi post pubblicati nel tag Subversion &#8212; aldolat.it</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>it</language>
        <managingEditor>aldolat@gmail.com (Aldo Latino)</managingEditor>
        <webMaster>aldolat@gmail.com (Aldo Latino)</webMaster>
        <copyright>Creative Commons BY-SA 4.0</copyright>
        <lastBuildDate>Mon, 02 Jun 2025 16:27:16 +0200</lastBuildDate>
        <atom:link href="https://www.aldolat.it/tags/subversion/index.xml" rel="self" type="application/rss+xml" />
        <item>
            <title>Usare Bazaar con un repository centrale su disco esterno</title>
            <link>https://www.aldolat.it/posts/2009/usare-bazaar-con-un-repository-centrale-su-disco-esterno/</link>
            <pubDate>Tue, 03 Nov 2009 09:18:41 +0000</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2009/usare-bazaar-con-un-repository-centrale-su-disco-esterno/</guid>
            <description>Ho sempre usato Bazaar tenendo il database delle revisioni nella stessa directory di lavoro del progetto, e la cosa non è sbagliata perché questo sistema di controllo di versione è stato pensato proprio così. Mi sono sempre trovato bene, ma ciò che mi sarebbe piaciuto era avere un unico archivio centrale dove tenere i database di tutti i progetti (idea che è nata dopo aver provato SVN); precisamente mi sarebbe piaciuto su un disco esterno, in modo da rendere più difficile la perdita dei dati in caso di crash o altro.</description>
            <content:encoded>&lt;figure class=&#34;aligncenter&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/11/bazaar_photo.jpg&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Ho sempre usato &lt;a href=&#34;http://bazaar-vcs.org/en/&#34;&gt;Bazaar&lt;/a&gt; tenendo il database delle revisioni nella stessa directory di lavoro del progetto, e la cosa non è sbagliata perché questo sistema di controllo di versione è stato pensato proprio così. Mi sono sempre trovato bene, ma ciò che mi sarebbe piaciuto era &lt;em&gt;avere un unico archivio centrale dove tenere i database di tutti i progetti&lt;/em&gt; (idea che è nata dopo aver provato &lt;span class=&#34;allsc&#34;&gt;SVN&lt;/span&gt;); precisamente mi sarebbe piaciuto &lt;em&gt;su un disco esterno&lt;/em&gt;, in modo da rendere più difficile la perdita dei dati in caso di crash o altro.&lt;/p&gt;&#xA;&lt;figure class=&#34;alignleft nobg&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/11/subversion.png&#34; width=&#34;80&#34; height=&#34;58&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;In questi ultimi tempi ho anche provato &lt;a href=&#34;http://subversion.tigris.org/&#34;&gt;Subversion&lt;/a&gt;, che mi è piaciuto per il suo rigore nello struttura delle &lt;em&gt;working directory&lt;/em&gt; (branches, tags, trunk) e per la filosofia di repository centrale, che mi è piaciuta davvero. Di contro non mi è proprio piaciuta la consuetudine di infilare una directory nascosta &lt;code&gt;.svn&lt;/code&gt; in ogni dove nel progetto. Non ho però una seria esperienza di Subversion per poterlo giudicare, ma mi è apparso comunque un pelino schizzinoso rispetto a Bazaar,&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; che invece apprezzo per la sua facilità e… direi “umanità”, proprio nello stile di Ubuntu, visto che anche lui è sponsorizzato da Canonical.&lt;/p&gt;&#xA;&lt;p&gt;Con un po&amp;rsquo; di pazienza e avendo in mente di creare un repository di progetti su un disco esterno, mi sono spulciato la &lt;a href=&#34;http://doc.bazaar-vcs.org/latest/en/index.html&#34;&gt;documentazione ufficiale di Bazaar&lt;/a&gt;, in cui ho trovato le informazioni che mi servivano.&lt;/p&gt;&#xA;&lt;p&gt;Ecco le &lt;em&gt;mie note personali&lt;/em&gt; su quello che ho fatto. Non prendetele come una guida all&amp;rsquo;uso, ma come una condivisione di esperienza che sicuramente ha lati non chiari per me. Anzi, se avete da correggere quanto scrivo, discutiamone pure nei commenti.&lt;/p&gt;&#xA;&lt;h2 id=&#34;inizializzare-il-repository-centrale-sul-disco-esterno&#34;&gt;Inizializzare il repository centrale sul disco esterno&lt;/h2&gt;&#xA;&lt;p&gt;Sul mio disco esterno &lt;span class=&#34;allsc&#34;&gt;USB&lt;/span&gt; ho creato una directory &lt;code&gt;bzr-repo&lt;/code&gt;, una sorta di contenitore: in essa metterò tutti i progetti, uno in ogni sua sottodirectory:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr-repo       # contenitore centrale&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+- progetto1   # directory progetto 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+- progetto2   # directory progetto 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+- progetto3   # directory progetto 3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Questa è l&amp;rsquo;idea. L&amp;rsquo;unica directory che ho creato finora è &lt;code&gt;bzr-repo&lt;/code&gt;. Le dipendenti le creeremo con bazaar. Da terminale diamo:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr init-repo --no-trees file:///media/Golia/Aldo/bzr-repo/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;L&amp;rsquo;opzione &lt;code&gt;--no-trees&lt;/code&gt; dice a Bazaar che in quel repository non si terranno le copie di lavoro (&lt;em&gt;working copy&lt;/em&gt;) dei file, ma solo il database con la loro storia. Questo comando va dato ovviamente una sola volta per tutti i progetti.&lt;/p&gt;&#xA;&lt;h2 id=&#34;creare-la-directory-del-progetto-1&#34;&gt;Creare la directory del progetto 1&lt;/h2&gt;&#xA;&lt;div class=&#34;note&#34;&gt;&#xA;    &#xA;    &lt;p class=&#34;aside&#34;&gt;&#xA;        &lt;em&gt;Quello che segue va fatto per ogni progetto che si vuole collegare al repository centrale.&lt;/em&gt;&#xA;    &lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Inizializziamo la directory del primo progetto:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr init file:///media/Golia/Aldo/bzr-repo/progetto1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Questo comando creerà la directory &lt;code&gt;progetto1&lt;/code&gt; con all&amp;rsquo;interno una nascosta &lt;code&gt;.bzr&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;creare-la-directory-di-lavoro-locale-e-collegarla-al-repository&#34;&gt;Creare la directory di lavoro locale e collegarla al repository&lt;/h2&gt;&#xA;&lt;p&gt;Col repository abbiamo finito. Passiamo ora in locale e creiamo la struttura delle directory di lavoro (immaginiamo di voler tenere i progetti nella directory &lt;code&gt;progetti&lt;/code&gt; nella propria &lt;code&gt;home&lt;/code&gt;), quelle in cui terremo le &lt;em&gt;working copy&lt;/em&gt;. Per essere chiari, ecco cosa ho in mente di creare:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;progetti           # contenitore generale&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; +- progetto-uno   # directory principale progetto 1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |  +- releases    # directory con i tarball dei rilasci&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |  +- trunk       # directory di sviluppo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; +- progetto-due   # directory principale progetto 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |  +- releases    # directory con i tarball dei rilasci&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; |  +- trunk       # directory di sviluppo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt; …```&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Questa struttura è quella che ho scelto io: ognuno può organizzarsi come meglio crede. Immagino sia semplice capire l&amp;rsquo;uso delle directory in base ai commenti.&lt;/p&gt;&#xA;&lt;p&gt;Passiamo all&amp;rsquo;opera nel terminale:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir -p progetti/progetto1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; progetti/progetto1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Colleghiamo (facciamo in realtà il checkout su) questa directory con quella relativa all&amp;rsquo;interno del repository:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr co file:///media/Golia/Aldo/bzr-repo/progetto1/ trunk&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Questo comando creerà la directory &lt;code&gt;trunk&lt;/code&gt; (quella in cui terremo fisicamente i file di lavoro) dentro &lt;code&gt;progetti/progetto1&lt;/code&gt;. Se ora la aprite, vedrete la solita directory &lt;code&gt;.bzr&lt;/code&gt; per il controllo.&lt;br&gt;&#xA;Passiamo ora in trunk:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; trunk/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Possiamo già iniziare a creare i nostri file e a lavorare.&lt;/p&gt;&#xA;&lt;p class=&#34;newpar&#34;&gt;Se invece abbiamo già un progetto in corso non ancora sotto controllo di versione, copiamo tutti i file e tutte le directory qui dentro:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp -ar ~/vecchia-directory/* .&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ora che abbiamo copiato i file, Bazaar ancora non sa cosa siano, quindi aggiungiamoli:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr add&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;e Bazaar li aggiungerà tutti, comprese le sottodirectory e il loro contenuto. Fatto ciò, eseguiamo il nostro primo &lt;code&gt;commit&lt;/code&gt; (cioè inviamo il tutto al repository centrale):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr commit -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;Primo upload&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;che possiamo anche scrivere con l&amp;rsquo;alias &lt;code&gt;ci&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr ci -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;Primo upload&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;L&amp;rsquo;acronimo &lt;code&gt;ci&lt;/code&gt; sta per &lt;em&gt;check-in&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p class=&#34;newpar&#34;&gt;Abbiamo finito con l&amp;rsquo;impostare database e directory di lavoro. Chiunque, adesso, se il disco è accessibile in rete, può scaricare la propria copia del progetto1 e lavorarci; ad esempio, in una rete dove è attiva una connessione &lt;span class=&#34;allsc&#34;&gt;SSH&lt;/span&gt;, si può lanciare un comando del tipo:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mkdir mia-directory-di-lavoro/progetto1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr co sftp://aldo@192.168.1.2/Aldo/bzr-repo/progetto1/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Questo comando si tirerà dietro tutta la storia del progetto. Se non lo si desidera, si può scaricare solo il progetto:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr co --lightweight sftp://aldo@192.168.1.2/Aldo/bzr-repo/progetto1/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;commit-delle-modifiche&#34;&gt;Commit delle modifiche&lt;/h2&gt;&#xA;&lt;p&gt;I paragrafi che seguono sono soltanto un promemoria rapido per alcune operazioni comuni con Bazaar. Vediamo la principale: il &lt;code&gt;commit&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p class=&#34;newpar&#34;&gt;Dopo ogni serie di modifiche correlate, eseguire il &lt;code&gt;commit&lt;/code&gt; con:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr ci -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;Descrizione della modifica&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;commit-locale-se-il-repository-è-irraggiungibile&#34;&gt;Commit locale se il repository è irraggiungibile&lt;/h2&gt;&#xA;&lt;p&gt;Qualora stiamo lavorando offline, lontano dal disco esterno, possiamo eseguire i &lt;code&gt;commit&lt;/code&gt; localmente (cioè nel database locale presente nella directory &lt;code&gt;trunk&lt;/code&gt;) e poi inviare tutte le modifiche in una volta al repository. Ecco come cambia il comando:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr ci --local -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;Descrizione delle modifiche&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Quando il repository sarà di nuovo raggiungibile, possiamo inviarle così:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr update&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;e quindi il commit&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr ci -m &lt;span class=&#34;s2&#34;&gt;&amp;#34;Descrizione delle modifiche&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il comando &lt;code&gt;update&lt;/code&gt; esegue il &lt;em&gt;merging&lt;/em&gt; delle revisioni, diciamo una “ri-unione” delle versioni tra quelle del repository e quelle del database locale. Questo perché Bazaar considera il lavoro offline come se fosse una nuovo linea di sviluppo (nello screenshot più sotto si vede graficamente questo concetto).&lt;/p&gt;&#xA;&lt;h2 id=&#34;taggare-una-versione&#34;&gt;Taggare una versione&lt;/h2&gt;&#xA;&lt;p&gt;Periodicamente è bene taggare (etichettare) una revisione del lavoro, magari in concomitanza di un rilascio. Dalla directory &lt;code&gt;trunk&lt;/code&gt; digitiamo:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr tag 0.3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dopo aver taggato una versione non c&amp;rsquo;è bisogno di fare il &lt;code&gt;commit&lt;/code&gt;, che precede quindi il comando di &lt;code&gt;tag&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;esportare-il-codice-in-un-pacchetto-o-in-una-directory&#34;&gt;Esportare il codice in un pacchetto o in una directory&lt;/h2&gt;&#xA;&lt;p&gt;Bazaar consente di esportare facilmente la directory di lavoro in un pacchetto compresso, senza esportare la directory nascosta. Entrare in &lt;code&gt;trunk/&lt;/code&gt; e digitare:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bzr &lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; ../releases/version-0.3.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La directory &lt;code&gt;releases&lt;/code&gt; deve ovviamente essere già stata creata manualmente prima del comando.&lt;/p&gt;&#xA;&lt;p&gt;Si può scegliere anche un altro formato di compressione: Bazaar lo ricoscerà automaticamente dall&amp;rsquo;estensione. I formati sono: &lt;code&gt;.tar&lt;/code&gt;, &lt;code&gt;.tar.bz2&lt;/code&gt;, &lt;code&gt;.tar.gz&lt;/code&gt;, &lt;code&gt;.zip&lt;/code&gt; (comprese le forme contratte). Se non mettiamo alcuna estensione, Bazaar esporterà il contenuto in una directory (nel caso di sopra in &lt;code&gt;../releases/version-0.3/&lt;/code&gt;).&lt;/p&gt;&#xA;&lt;h2 id=&#34;una-gui-per-bazaar&#34;&gt;Una GUI per Bazaar&lt;/h2&gt;&#xA;&lt;p&gt;Esiste anche una comodissima interfaccia grafica per Bazaar, &lt;em&gt;Olive&lt;/em&gt;, che potete installare con apt. Ecco qualche screenshot:&lt;/p&gt;&#xA;&lt;figure class=&#34;aligncenter&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/11/olive3.png&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;I progetti su Olive e la barra degli strumenti.&#34; width=&#34;448&#34; height=&#34;319&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;I progetti su Olive e la barra degli strumenti.&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure class=&#34;aligncenter&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/11/olive1.png&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;La storia delle revisioni di un progetto, con i commit locali (in blu) poi riuniti e i tag.&#34; width=&#34;448&#34; height=&#34;580&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;La storia delle revisioni di un progetto, con i commit locali (in blu) poi riuniti e i tag.&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;figure class=&#34;aligncenter&#34;&gt;&lt;img src=&#34;https://www.aldolat.it/images/2009/11/olive2.png&#34;&#xA;&#x9;&#x9;&#x9;alt=&#34;I cambiamenti effettuati in una particolare revisione.&#34; width=&#34;448&#34; height=&#34;296&#34;&gt;&lt;figcaption&gt;&#xA;&#x9;&#x9;&#x9;&lt;p&gt;I cambiamenti effettuati in una particolare revisione.&lt;/p&gt;&#xA;&#x9;&#x9;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p class=&#34;photo-credits&#34;&gt;Photo credits:&#xA;    &lt;span class=&#34;photo-author&#34;&gt;Williamcho&lt;/span&gt;,&#xA;    &#xA;        &lt;span class=&#34;photo-title&#34;&gt;&lt;a href=&#34;http://www.flickr.com/photos/adforce1/6036636784/&#34; class=&#34;photo-link&#34;&gt;Bugis Street is not quite the same as what it used to be&amp;hellip;&lt;/a&gt;&lt;/span&gt;,&#xA;    &#xA;    &lt;span class=&#34;photo-license&#34;&gt;CC by-nc&lt;/span&gt;,&#xA;    &#xA;    &lt;span class=&#34;photo-year&#34;&gt;2010&lt;/span&gt;.&#xA;&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;Ad esempio, avevo cancellato un bel numero di file e la loro directory da quella di lavoro. Al momento del commit Subversion mi dice che non potevo eseguire il commit perché questi file non c&amp;rsquo;erano (o erano obsoleti, onestamente non ricordo). Esisterà un comando per farglieli cancellare dal database pur non essendo presenti fisicamente, ma non ci sono riuscito (diciamo pure che non mi sono impegnato). Bazaar, invece, capisce che quei file sono già stati eliminati dall&amp;rsquo;utente e permette il commit, eliminandoli automaticamente.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2009/usare-bazaar-con-un-repository-centrale-su-disco-esterno/&#34;&gt;Usare Bazaar con un repository centrale su disco esterno&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
    </channel>
</rss>
