<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>G.R.Y.S. &#187; Bugs Everywere</title>
	<atom:link href="http://www.grys.it/index.php/tag/bugs-everywere/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.grys.it</link>
	<description>...giusto per divertirsi</description>
	<lastBuildDate>Sun, 29 Jan 2012 23:12:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Giocare con i BTS distribuiti</title>
		<link>http://www.grys.it/index.php/2009/04/giocare-con-i-bts-distribuiti/</link>
		<comments>http://www.grys.it/index.php/2009/04/giocare-con-i-bts-distribuiti/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 20:54:19 +0000</pubDate>
		<dc:creator>gian</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[BTS]]></category>
		<category><![CDATA[Bugs Everywere]]></category>

		<guid isPermaLink="false">http://www.grys.it/?p=412</guid>
		<description><![CDATA[Su istigazione di questa persona, mi sono messo a giocare con i BTS distribuiti.
I BTS distribuiti  non hanno un database centrale, copiando quindi la logica dei vari programmi di gestione delle versioni (VCS, da Version Control system) distribuiti come git, mercurial, darcs etc.
Come i VCS distribuiti si contrappongono ai VCS centralizzati per la mancanza di [...]]]></description>
			<content:encoded><![CDATA[<p>Su istigazione di <a href="http://www.trueelena.org/" target="_blank">questa persona</a>, mi sono messo a giocare con i BTS distribuiti.</p>
<p>I BTS distribuiti  non hanno un database centrale, copiando quindi la logica dei vari programmi di gestione delle versioni (VCS, da Version Control system) distribuiti come git, mercurial, darcs etc.</p>
<p>Come i VCS distribuiti si contrappongono ai VCS centralizzati per la mancanza di un repository cerntrale dove vengono memorizzare le revisioni e così via, allo stesso modo i BTS (Bug Tracking System) distribuiti non hanno un unico database in cui vengono memorizzate le richieste e i bug.</p>
<p>Potremmo dire che se un software tipo bugzilla o flyspray è il compagno ideale di CVS o subversion, un BTS distribuito è il compagno ideale di Git o Bazaar.</p>
<p>Finita questa breve premessa, vediamo di passare ad analizzare gli eventuali vantaggi e svantaggi di questi sistemi, tenendo presente che ovviamente non è un&#8217;analisi completa.</p>
<p>Dopo aver valutato diversi sistemi di BTS distribuiti, la mia scelta è caduta su <a href="http://www.bugseverywhere.org/be/show/HomePage" target="_blank">Bugs Everywere</a>, per due semplici ragioni:</p>
<ul>
<li>è scritto in python</li>
<li>si integra meglio di altri con git (almeno per me)</li>
</ul>
<p>A dire il vero, il primo lo si vede da sè, mentre il secondo nasce dall&#8217;uso. L&#8217;altro candidato era <a href="http://ditz.rubyforge.org/" target="_blank">Ditz</a>. Altri sistemi ci sono, ma non mi hanno impressionato.</p>
<p>Come per i VCS distribuiti il vantaggio maggiore è quello di poter fare tutto off-line. Si può quindi ad esempio aggiungere un bug, modifcarne un altro e chiuderne un terzo senza il bisogno di essere on-line. Questo è il completamento ideale per un VCS tipo git, in quanto rende indipendente lo sviluppatore dall&#8217;essere sempre on-line anche per il lato BTS.</p>
<p>Ovviamente ci sono anche degli svantaggi: ad esempio, sono mediamente più complessi da usare per l&#8217;utente finale, visto che di solito hanno un&#8217;interfaccia testuale e accompagnano i sorgenti (e non gli eseguibili).</p>
<p>Una cosa interessante è che i repository dei bug vengono generalmente trattati come dei qualsiasi file del progetto e quindi i vari elenchi possono essere gestiti in maniera naturale.</p>
<p>Tutti i problemi sono però superabili in un modo o in un altro. Ad esempio Ditz ha un generatore di pagine html statiche per consentire di pubblicare lo stato del progetto via web.</p>
<p>Come ho già  detto la mia scelta è caduta su Bugs Everywere, con il quale traccio i bug di Chiamami (una semplice agenda telefonica).</p>
<p>Il vantaggio principale di BE è la migliore integrazione con git (il VCS che uso), anche se a scapito di una peggiore interfaccia rispetto a Ditz.</p>
<p><strong>Guida veloce a Bugs Everywhere</strong></p>
<p>Adesso una veloce e minuscola guida all&#8217;uso di BE per la gestione di un progetto. Lanciando BE senza parametri otteniamo l&#8217;elenco dei comandi supportati.</p>
<pre>galactica:~/Devel/Test2&gt; be
Bugs Everywhere - Distributed bug tracking

Supported commands
be assign      Assign an individual or group to fix a bug
be close       Close a bug
be comment     Add a comment to a bug
be diff        Compare bug reports with older tree
be help        Print help for given subcommand
be list        List bugs
be new         Create a new bug
be open        Re-open a bug
be remove      Remove (delete) a bug and its comments
be set         Change tree settings
be set-root    Assign the root directory for bug tracking
be severity    Show or change a bug's severity level
be show        Show a particular bug
be status      Show or change a bug's status
be target      Show or change a bug's target for fixing
galactica:~/Devel/Test2&gt;</pre>
<p>Si nota abbastanza facilmente che sono abbastanza simili a quelli di un qualsiasi BTS tradizionale.</p>
<p>Un problema che ho riscontrato (ma forse sono io che sbaglio) è che mentre ovviamente non esistono elenchi di <em>target</em> predisposti al contrario di <em>status</em> e <em>severity</em>, non c&#8217;è un modo di avere l&#8217;elenco dei <em>target</em> già presenti, e questo su progetti un pò più grandi del piccolo progetto personale potrebbe essere un problema. Dopo un rapido scambio di mail con l&#8217;autore, questa funzionalità verrà inserita in una prossima versione.</p>
<p><strong>Inizializzare il repository</strong></p>
<p>Partendo dal presupposto di avere già un repository git, per inizializzare il repository be si usa il comando</p>
<pre>be set-root</pre>
<p>e se tutto va bene il sistema ritorna</p>
<pre>galactica:~/Devel/Test2&gt; be set-root
Using git for revision control.
Directory initialized.
galactica:~/Devel/Test2&gt;</pre>
<p>Si può notare che BE riconosce automaticamente il fatto che si usa git.</p>
<p>Una nota: il repository git deve avere nella sezione config i valori si user.name e user.email settati, altrimenti il comando fallisce.</p>
<p><strong>Lavorare con i bug<br />
</strong></p>
<p>Per aggiungere un nuovo <em>issue</em>, si usa il comando <em>new</em></p>
<pre>galactica:~/Devel/Test2&gt; be new "Test"
Created bug with ID 90c
galactica:~/Devel/Test2&gt;</pre>
<p>L&#8217;elemento viene creato usando i valori di default del sistema. Creato l&#8217;elemento, è possibile modificarlo usando i vari comandi per impostare la gravità, a chi è assegnato, la deadline per la quale si deve chiudere (in termini di versione, ma dato che la versione è una stringa arbitraria, potrebbe anche essere una data) o aggiungere una descrizione più estesa del problema/richiesta.</p>
<p>Ad esempio, per alzare la gravità del bug appena inserito da <em>minor</em>, che è il default, a <em>serious</em> si usa il comando <em>severity</em></p>
<pre>be severity 90c serious</pre>
<p>dove 90c è l&#8217;id dell&#8217;elemento.</p>
<p>Possiamo vedere i dettagli del bug con il comando <em>show</em></p>
<pre>galactica:~/Devel/Test2&gt; be show 90c
          ID : 90cc54c6-d3e3-4562-b340-9c50d8d9ca31
  Short name : 90c
    Severity : serious
      Status : open
    Assigned :
      Target :
     Creator : gian &lt;gian@grys.it&gt;
     Created : Thu, 16 Apr 2009 23:01 (Thu, 16 Apr 2009 21:01:05 +0000)
Test
--------- Comment ---------
Name: 90c:1
From: gian &lt;gian@grys.it&gt;
Date: Thu, 16 Apr 2009 21:11:53 +0000

Aggiungere un commento
galactica:~/Devel/Test2&gt;</pre>
<p>.Per chiudere un bug, si usa abbastanza ovviamente il comando <em>close</em></p>
<pre>be close 90c</pre>
<p>Se invece abbiamo già un elendo di bug e lo vogliamo visualizzare, allora ci viene in aiuto il comando <em>list</em></p>
<pre>galactica:~/Devel/Test2&gt; be list
90c:os: Test
981:om: Test
galactica:~/Devel/Test2&gt;</pre>
<p>Il formato e&#8217; questo:</p>
<ul>
<li><em>90c</em> indica l&#8217;id del bug</li>
<li><em>os</em> indica stato e severità del bug</li>
<li>il resto è il sommario</li>
</ul>
<p>Questo è tutto quello che serve per poter usare Bugs Everywhere nel lavoro di tutti i giorni.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grys.it/index.php/2009/04/giocare-con-i-bts-distribuiti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

