<?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>Exponential Fault &#187; organisation</title>
	<atom:link href="http://weblog.lo2k.net/tag/organisation/feed/" rel="self" type="application/rss+xml" />
	<link>http://weblog.lo2k.net</link>
	<description></description>
	<lastBuildDate>Tue, 29 Jun 2010 09:51:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Pourquoi utiliser GIT plutôt que SVN ?</title>
		<link>http://weblog.lo2k.net/2008/11/pourquoi-utiliser-git-plutot-que-svn/</link>
		<comments>http://weblog.lo2k.net/2008/11/pourquoi-utiliser-git-plutot-que-svn/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 12:34:44 +0000</pubDate>
		<dc:creator>X-Blaster</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[organisation]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://weblog.lo2k.net/2008/11/26/pourquoi-utiliser-git-plutot-que-svn/</guid>
		<description><![CDATA[VITE URGENT ! Notre client &#8220;xxx&#8221; veut à tout pris une integration avec gloubiboulga maintenant. Cela ne PEUT pas attendre. Cas de figure avec SVN Je pense que vous avez déjà tous eu le cas d&#8217;un client qui a une demande super urgente. La gestion de ce genre de cas est très difficile car: L&#8217;application [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>VITE URGENT ! Notre client &#8220;xxx&#8221; veut à tout pris une integration avec gloubiboulga maintenant. Cela ne PEUT pas attendre.</p></blockquote>
<h2>Cas de figure avec SVN</h2>
<p>Je pense que vous avez déjà tous eu le cas d&#8217;un client qui a une demande super urgente.</p>
<p>La gestion de ce genre de cas est très difficile car:</p>
<ol>
<li>L&#8217;application doit rester stable.</li>
<li>Les developpeurs ne DOIVENT pas gérer plusieurs version à la fois.</li>
</ol>
<p>Concrètement cela va se résumer à la création d&#8217;une branche, sûrement un &#8220;branches/gloubiboulga&#8221;.  Mais voila ! Il doit partir en production mais il n&#8217;a pas été testé dans tout les cas car le client sur lequel l&#8217;appli va être testé n&#8217;utilise pas toutes les fonctionnalités de votre logiciel et dans l&#8217;état, IL MARCHE.  Il peut partir en production mais en aucun cas ne peut être mergé avec le &#8220;trunk&#8221;car cela pourrait causer un désastre sur le reste de l&#8217;appli.  3 versions se succedent et votre client revient en vous demandant &#8220;pourquoi ma version n&#8217;évolue plus ?&#8221;. <span id="more-76"></span></p>
<h2>SVN donne de mauvaises habitudes</h2>
<p>Si vous êtes un utilisateur de SVN vous devez trouver la gestion de branch assez &#8220;utopique&#8221;. On a souvent en tête <strong>le développeur un peu foufou qui part s&#8217;exiler 3 semaines dans un chalet</strong> pour faire un fork complet qu&#8217;il faudra reintegrer à l&#8217;appli.  Le reste du temps, tout le monde développe dans &#8220;trunk&#8221; et trouve cela parfaitement normal. Pour reprendre une phrase que j&#8217;ai déjà souvent entendu &#8220;ça marche, pourquoi changer ?&#8221;.</p>
<blockquote><p>Et si maintenant je veux une version stable, dans la seconde, je fais comment ?</p></blockquote>
<p>Le soucis est maintenant, avec cette méthode de développement, si je veux une version stable instantanément je fais comment ?  Vous allez me ressortir une vieille version stabilisé il y a 2 mois. Vous êtes sûr qu&#8217;elle marche, elle a était testé par 30 personnes de manières intensives pendant 2 semaines. Pourtant à l&#8217;heure actuel, vous pourriez peut être faire une version stable sauf que &#8220;Roger&#8221; doit finaliser un support de fichier quelconque et le soucis c&#8217;est que lui aussi travaille dans &#8220;trunk&#8221;.</p>
<h2>Pourquoi on a prit de mauvaises habitudes ?</h2>
<p>Tout simplement parce que SVN ne permet pas de faire simplement <strong>un merge dans les deux sens</strong>.</p>
<p>Si chacun travaille dans une branche dans SVN</p>
<ol>
<li>Les merges peuvent devenir un cauchemard</li>
<li>Si Roger commit une amélioration, Patrick n&#8217;en beneficiera pas dans sa branche sans faire un merge qui pourrait devenir un casse tête.</li>
</ol>
<p>Alors je vais vous poser deux questions:</p>
<ol>
<li>Et si &#8220;trunk&#8221; devenait stable ?</li>
<li>Et si tout le monde crée une branche par amélioration à apporter ?</li>
</ol>
<h2>Maintenant on change la méthode de travail</h2>
<p><a href="http://weblog.lo2k.net/wp-content/uploads/2008/11/state-machine-diagram1.gif" title="state-machine-diagram1.gif"><img src="http://weblog.lo2k.net/wp-content/uploads/2008/11/state-machine-diagram1.thumbnail.gif" alt="state-machine-diagram1.gif" /></a> Voici à présent comment sous GIT le développement peut s&#8217;articuler. Une branche est crée pour chaque &#8220;tache&#8221;. Les taches mineures pouvant bien évidemment être dans une même branche.</p>
<p>Il y a 3 principal zones</p>
<ol>
<li>Les branches (en developpement)</li>
<li>La branche &#8220;Testing&#8221;</li>
<li>La branche &#8220;Stable&#8221;</li>
</ol>
<p>On garantit ici la stabilité par 2 tests.</p>
<p>Le deuxième test est justifié sur de possibles interactions entre taches qui pourraient faire apparaitre des bugs qui ne seraient pas apparu pendant le test du module a la fin de la période de développement.</p>
<p>On se retrouve ici avec une architecture de développement proche des packages debian avec plusieurs niveaux de &#8220;stabilité&#8221;.</p>
<h2>GIT serait-il magique ?</h2>
<p>GIT permet une approche de développement totalement différente et permet plus facilement a mon sens de &#8220;stabiliser&#8221; une version d&#8217;une application si on utilise ce type d&#8217;architecture. Cependant il y plusieurs autre élément a prendre en compte.</p>
<ul>
<li>Une architecture de ce type est inutile pour des petits projects avec juste 2 ou 3 personnes</li>
<li>GIT est un outil qui propose une grande liberté. Un merge avec par exemple &#8220;-s ours&#8221; pourrait causer des catastrophes desastreuses, il faut donc avoir conscience de ce que l&#8217;on fait.</li>
</ul>
<p>Pour plus d&#8217;info sur git je vous conseille de voir comment fonctionne la fonction &#8220;<a href="http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html">rebase</a>&#8221; de GIT et de consulter mais bookmarks associé sur &#8220;<a href="http://delicious.com/xblaster/git">del.icio.us</a>&#8221;<br />
C&#8217;est mon premier post &#8220;serieux&#8221; sur mon blog&#8230; donc n&#8217;hesitez pas a donner des critiques <img src='http://weblog.lo2k.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://weblog.lo2k.net/2008/11/pourquoi-utiliser-git-plutot-que-svn/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
