<?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>Eolya Consulting</title>
	<atom:link href="http://www.eolya.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eolya.fr</link>
	<description>Moteurs de recherche d&#039;entreprise et verticaux</description>
	<lastBuildDate>Fri, 18 May 2012 14:33:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Mercurial et Bitbucket &#8211; Workflow default &amp; stable</title>
		<link>http://www.eolya.fr/2011/11/20/mercurial-et-bitbucket-workflow-default-stable/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mercurial-et-bitbucket-workflow-default-stable</link>
		<comments>http://www.eolya.fr/2011/11/20/mercurial-et-bitbucket-workflow-default-stable/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 22:29:54 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Productivité]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Bitbucket]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://www.eolya.fr/?p=1189</guid>
		<description><![CDATA[Ce document est un mémento des commandes et de leurs enchainements lors de l&#8217;utilisation d&#8217;un dépôt local et d&#8217;un dépôt central hébergé sur Bitbucket. Le principe de travail est basé sur un fonctionnement avec 2 branches : default et stable. La branche &#171;&#160;default&#160;&#187; est la branche de développement qui est toujours la plus à jour [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zoonix.fr/uploads/2011/01/mercurial-logo.png"><img class="alignleft size-full wp-image-689" title="logo_small" src="http://www.zoonix.fr/uploads/2011/01/mercurial-logo.png" alt="" /></a>Ce document est un mémento des commandes et de leurs enchainements lors de l&#8217;utilisation d&#8217;un dépôt local et d&#8217;un dépôt central hébergé sur Bitbucket. Le principe de travail est basé sur un fonctionnement avec 2 branches : default et stable.</p>
<p>La branche &laquo;&nbsp;default&nbsp;&raquo; est la branche de développement qui est toujours la plus à jour (HEAD dans le monde svn).</p>
<p>La branche &laquo;&nbsp;stable&nbsp;&raquo; est la branche contenant uniquement des versions stables. Le contenu de la branche &laquo;&nbsp;stable&nbsp;&raquo; correspond à la dernière release officielle. On utilise cette branche pour la correction de bugs urgents (hotfix).</p>
<p>Les actions Mercurial sont réalisées au moyen de la commande &laquo;&nbsp;hg&nbsp;&raquo;. Certaines actions concernent le dépôt local (interactions entre les sources et le dépôt local),  d&#8217;autres concernent le dépôt central (interactions entre le dépôt local et le dépôt central). Les commandes locales seront indiquées en bleu et les autres en rouge.</p>
<p>Pour l&#8217;exemple, le projet s&#8217;appelle &laquo;&nbsp;HelloWorld&nbsp;&raquo;. Le but est de commencer avec les 2 dépôt (local et central) synchronisés.</p>
<p><strong><span style="text-decoration: underline;">Cas 1 : le projet est totalement nouveau, il n&#8217;y a ni dépôt local, ni dépôt central</span></strong></p>
<p>Créer un dépôts &laquo;&nbsp;HelloWord&nbsp;&raquo; central sur Bitbucket</p>
<p>On obtient l&#8217;url d&#8217;accès au dépot : ssh://hg@bitbucket.org/bejean/helloworld</p>
<p>Créer un dépôt local</p>
<pre>$ mkdir /Projects/HelloWord
$ cd /Projects/HelloWord
$ <span style="color: #0000ff;">hg init</span></pre>
<p><span style="text-decoration: underline;"><strong>Cas 2 : le projet existe dans un dépôt central</strong></span></p>
<p>Créer un dépôt local et récupérer les sources du dépot central.</p>
<pre>$ mkdir /Projects/HelloWord
$ cd /Projects/HelloWord
$ <span style="color: #0000ff;">hg init</span></pre>
<pre>$ hg clone ssh://hg@bitbucket.org/bejean/helloworld</pre>
<p>(cette commande met à jour à la fois le dépôt local et les sources, elle devrait être bleue et rouge)</p>
<p><span style="text-decoration: underline;"><strong>Cas 3 : le projet existe dans un dépôt local</strong></span></p>
<p>Créer un dépôt central.<br />
On obtient l&#8217;url d&#8217;accès au dépôt : ssh://hg@bitbucket.org/bejean/helloworld</p>
<p>Se placer dans le dépôt local et envoyer les sources dans le dépôt central.</p>
<pre>$ cd /Projects/HelloWord
$ <span style="color: #ff0000;">hg push ssh://hg@bitbucket.org/bejean/helloworld</span></pre>
<p>Pour la suite de cet article, nous supposons que l&#8217;on est dans le cas 1. On a alors nos dépôts créés mais vides.</p>
<p><span style="text-decoration: underline;"><strong>Configuration</strong></span></p>
<p>Afin de ne pas devoir spécifier l&#8217;url du dépôt central pour toutes les commandes qui interagissent entre le dépôt local et le dépôt central (en rouge), nous allons commencer par configurer notre dépôt local.</p>
<p>On édite le fichier &laquo;&nbsp;hgrc&nbsp;&raquo; du dépôt.</p>
<pre>$ cd /Projects/HelloWord
$ vi .hg/hgrc</pre>
<p>et on ajoute la section suivante :</p>
<pre>[paths]
default = ssh://hg@bitbucket.org/bejean/helloworld</pre>
<p><span style="text-decoration: underline;"><strong>Début de développement</strong></span></p>
<p>Commençons à travailler dans notre environnent local. On créer un fichier en local</p>
<pre>$ cd /Projects/HelloWord
$ touch readme.txt</pre>
<p>hg status indique que le fichier est inconnu dans le dépôt local</p>
<pre>$ <span style="color: #0000ff;">hg status</span>
? readme.txt</pre>
<p>On ajoute le fichier dans le dépôt local</p>
<pre>$ <span style="color: #0000ff;">hg add readme.txt</span></pre>
<p>hg status indique que le fichier est connu dans le dépôt local mais pas à jour</p>
<pre>$ <span style="color: #0000ff;">hg status</span>
A readme.txt</pre>
<p>On met a jour le fichier dans le dépôt local</p>
<pre>$ <span style="color: #0000ff;">hg commit -m "Premiere version du fichier" readme.txt</span></pre>
<p>hg status n&#8217;indique plus de fichier inconnus ou non à jour.</p>
<p>hg branches indique maintenant qu&#8217;il existe une branche &laquo;&nbsp;default&nbsp;&raquo;</p>
<pre>$ <span style="color: #0000ff;">hg branches</span>
default                        0:621365c7850a</pre>
<p>Le dépôt central n&#8217;est toujours pas au courant du contenu du dépôt local. On envoi nos modifications dans le dépôt central.</p>
<pre>$ <span style="color: #ff0000;">hg push</span>
pushing to ssh://hg@bitbucket.org/bejean/helloworld
searching for changes
remote: adding changesets
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files
remote: bb/acl: bejean is allowed. accepted payload.</pre>
<p>La copie d&#8217;écran si dessous montre que le dépot central est à jour avec une branche &laquo;&nbsp;default&nbsp;&raquo;</p>
<p><a href="http://www.eolya.fr/wp-content/uploads/2011/11/bitbucket_1.png"><img class="aligncenter size-full wp-image-1193" title="bitbucket_1" src="http://www.eolya.fr/wp-content/uploads/2011/11/bitbucket_1.png" alt="" width="511" height="229" /></a></p>
<p><span style="text-decoration: underline;"><strong>Publication d&#8217;une première version stable (v1.0) : branches et tags</strong></span></p>
<p>On considère que cette version des sources du projet est la première version stable. Il faut donc maintenant :</p>
<p>1/ tagger la version</p>
<pre>$ <span style="color: #0000ff;">hg tag v1.0</span></pre>
<p>2/ créer une branche &laquo;&nbsp;stable&nbsp;&raquo; qui soit le reflet de la branche &laquo;&nbsp;default&nbsp;&raquo;</p>
<pre>$ <span style="color: #0000ff;">hg branch stable</span>
$ <span style="color: #0000ff;">hg commit -m "branch stable"</span></pre>
<p>Afficher les tags, les branches et la branche active.</p>
<pre>$ <span style="color: #0000ff;">hg tags</span>
tip                                2:88b63958bb97
v1.0                               0:621365c7850a</pre>
<pre>$ <span style="color: #0000ff;">hg branches</span>
stable                         2:88b63958bb97
default                        1:6d1c947c8a95 (inactive)</pre>
<pre>$ <span style="color: #0000ff;">hg branch</span>
stable</pre>
<p>On met à jour le dépôt central avec la nouvelle branche.</p>
<pre>$ <span style="color: #ff0000;">hg push --new-branch</span></pre>
<p>Voici un schéma qui récapitule les différentes actions et les différents flux.</p>
<p><a href="http://www.eolya.fr/wp-content/uploads/2011/11/graph_1.png"><img class="aligncenter size-full wp-image-1212" title="graph_1" src="http://www.eolya.fr/wp-content/uploads/2011/11/graph_1.png" alt="" width="519" height="375" /></a></p>
<p>Attention, à cette étape, la branche active est &laquo;&nbsp;stable&nbsp;&raquo;. Il faut revenir à la branche &laquo;&nbsp;default&nbsp;&raquo;, pour coder de nouvelles fonctionnalités.</p>
<pre>$ <span style="color: #0000ff;">hg update default</span>
$ <span style="color: #0000ff;">hg branch</span>
default</pre>
<p><span style="text-decoration: underline;"><strong>Le développement continu &#8230;</strong></span></p>
<p>On modifie le fichier readme.txt et la commande hg status nous le confirme.</p>
<pre>$ <span style="color: #0000ff;">hg status</span>
M readme.txt</pre>
<p>on commit les modifications dans le dépôt local</p>
<pre>$ <span style="color: #0000ff;">hg commit -m "Ajout d'une fonction"</span></pre>
<p>On peut vérifier les modifications locales transférables dans le dépôt central.</p>
<pre>$ <span style="color: #ff0000;">hg outgoing</span>
comparaison avec ssh://hg@bitbucket.org/bejean/helloworld
searching for changes
changeset:   3:2b9ef639a08b
tag:         tip
parent:      1:6d1c947c8a95
user:        Dominique Bejean &lt;dominique.bejean@eolya.fr&gt;
date:        Sat Nov 19 20:16:49 2011 +0100
summary:     Ajout d'une fonction</pre>
<p>Si ces modifications sont terminées, on peut les mettre à disposition des autres développeurs dans le dépôt central</p>
<pre>$ <span style="color: #ff0000;">hg push</span></pre>
<p>De même on peut vérifier les modifications faites dans le dépôt central (par d&#8217;autres développeurs) et pouvant être récurées. Dans notre cas, il n&#8217;y en a pas.</p>
<pre>$ <span style="color: #ff0000;">hg incoming</span>
comparaison avec ssh://hg@bitbucket.org/bejean/helloworld
searching for changes
aucun changement trouvé</pre>
<p>Régulièrement, on récupère dans notre dépôt local les modifications faites par les autres développeurs et disponibles dans le dépôt central.</p>
<pre>$ <span style="color: #ff0000;">hg pull</span>
$ <span style="color: #0000ff;">hg update</span></pre>
<p><span style="text-decoration: underline;"><strong>Publication d&#8217;un nouvelle version (v2.0)</strong></span></p>
<p>La publication d&#8217;une nouvelle version implique de :</p>
<p>1/ tagger la branche active (default)</p>
<pre>$ <span style="color: #0000ff;">hg tag v2.0</span></pre>
<p>2/ mettre à jour la stable (merger default dans stable)</p>
<pre>$ <span style="color: #0000ff;">hg update stable</span>
$ <span style="color: #0000ff;">hg merge default</span></pre>
<p>(gérer les conflits. il ne devrait pas y en avoir si les hotfixs fait dans stable ont systématiquement été mergés dans default)</p>
<pre>$ <span style="color: #0000ff;">hg commit -m "merge from default"</span></pre>
<p>3/ revenir dans la branche de développement</p>
<pre>$ <span style="color: #0000ff;">hg update default</span></pre>
<p><span style="color: #000000;">Le diagramme suivant illustre les séquences de commandes durant le cycle de production d&#8217;une nouvelle version :</span></p>
<p><span style="color: #0000ff;"><a href="http://www.eolya.fr/wp-content/uploads/2011/11/graph_3.png"><img class="aligncenter size-full wp-image-1238" title="graph_3" src="http://www.eolya.fr/wp-content/uploads/2011/11/graph_3.png" alt="" width="552" height="620" /></a></span></p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><strong>Correction d&#8217;un bug dans la version stable</strong></span></p>
<p>1/ se placer dans la version stable</p>
<pre>$ <span style="color: #0000ff;">hg update stable</span></pre>
<p>2/ corriger le bug</p>
<pre>$ vi readme.txt</pre>
<p>3/ commiter la correction</p>
<pre>$ <span style="color: #0000ff;">hg commit -m "v2.0 fixe"</span></pre>
<p>4/ revenir à la branche default</p>
<pre>$ <span style="color: #0000ff;">hg update default</span></pre>
<p>5/ merger la correction de la branche stable et résoudre les potentiels conflits</p>
<pre>$ <span style="color: #0000ff;">hg merge stable</span>
$ vi readme.txt
$ <span style="color: #0000ff;">hg resolve -m readme.txt</span>
$ <span style="color: #0000ff;">hg commit -m "merge resolve"</span>
$ rm readme.txt.orig</pre>
<p>&nbsp;</p>
<p>Comme référence, on trouve les 2 diagrammes suivants sur le site <a href="http://ivy.fr/" target="_blank">ivy.fr</a> (licence Creative Commons Attribution 3.0 Unported).</p>
<pre><a href="http://www.eolya.fr/wp-content/uploads/2011/11/Mercurial-QuickStart-v1.0-120dpi.png"><img class="aligncenter size-full wp-image-1219" title="Mercurial-QuickStart-v1.0-120dpi" src="http://www.eolya.fr/wp-content/uploads/2011/11/Mercurial-QuickStart-v1.0-120dpi.png" alt="" width="528" height="408" /></a></pre>
<pre><a href="http://www.eolya.fr/wp-content/uploads/2011/11/Mercurial-Usage-v1.0-120dpi.png"><img class="aligncenter size-full wp-image-1220" title="Mercurial-Usage-v1.0-120dpi" src="http://www.eolya.fr/wp-content/uploads/2011/11/Mercurial-Usage-v1.0-120dpi.png" alt="" width="528" height="408" /></a></pre>
<p>Un autre diagramme (trouvé sur le site <a href="http://secretgeek.net/mercurial_flow.asp" target="_blank">secretGeek</a>) qui indique un workflow basic. Le point 6 (qui n&#8217;est pas systématique) doit être suivi d&#8217;un &laquo;&nbsp;hg up&nbsp;&raquo;.</p>
<p><a href="http://www.eolya.fr/wp-content/uploads/2011/11/mercurial_workflow_image.png"><img class="aligncenter size-full wp-image-1224" title="mercurial_workflow_image" src="http://www.eolya.fr/wp-content/uploads/2011/11/mercurial_workflow_image.png" alt="" width="459" height="374" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/11/20/mercurial-et-bitbucket-workflow-default-stable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git et Subversion : quand plus rien ne va</title>
		<link>http://www.eolya.fr/2011/09/17/git-et-subversion-quand-plus-rien-ne-va/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-et-subversion-quand-plus-rien-ne-va</link>
		<comments>http://www.eolya.fr/2011/09/17/git-et-subversion-quand-plus-rien-ne-va/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 17:00:43 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Productivité]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.eolya.fr/?p=1103</guid>
		<description><![CDATA[Les plugins WordPress sont livrés dans le directory WordPress au moyen d&#8217;un repository SVN. A chaque nouvelle version du plugin, on en commit les sources et on les tags, ce qui provoque l’apparition de la nouvelle version sur le site WordPress. Afin de gérer les sources du plugin et de travailler en équipe, on peut [...]]]></description>
			<content:encoded><![CDATA[<p>Les plugins WordPress sont livrés dans le <a href="http://wordpress.org/extend/plugins/" target="_blank">directory WordPress</a> au moyen d&#8217;un repository <a href="http://subversion.apache.org/" target="_blank">SVN</a>. A chaque nouvelle version du plugin, on en commit les sources et on les tags, ce qui provoque l’apparition de la nouvelle version sur le site WordPress.</p>
<p>Afin de gérer les sources du plugin et de travailler en équipe, on peut utiliser un outil de gestion de source tel que <a href="http://git-scm.com/">Git</a> et utiliser <a href="https://github.com/">Github</a> comme repository central. Pour la passerelle Git vers SVN, on utilise alors la commande <strong>git svn</strong> et ses différentes actions.</p>
<p>Je ne décrirai pas ici comment fonction SVN et Git. Par contre, je souhaite expliquer comment j&#8217;ai pu résoudre un problème de mise à jour du repository SVN de WordPress lors de la livraison d&#8217;une nouvelle version d&#8217;un plugin.</p>
<p>Donc, après des modifications du plugin, je commit et je mets à jours github. Les commandes successives sont en simplifiant :</p>
<pre>git commit ...
git push origin master</pre>
<p>&nbsp;</p>
<p>Jusque là tout va bien !</p>
<p>Après ceci, je veux mettre à jour le repoitory svn de WordPress puis tagger une nouvelle version du plugin et là patatra !</p>
<pre>git svn dcommit
    Committing to http://plugins.svn.wordpress.org/browse-content-by-my-solr-server/trunk ...
    Merge conflict during commit: File or directory 'browse-content-by-my-solr-server.php' is
    out of date; try updating: resource out of date; try updating at
    /usr/local/git/libexec/git-core/git-svn line 579</pre>
<p>&nbsp;</p>
<p>Que ce fichier soit &laquo;&nbsp;out of date&nbsp;&raquo;, je n&#8217;en doute pas car je l&#8217;ai bien modifié en local et après avoir mis à jour le repository github, c&#8217;est le repository SVN que je veux mettre à jour avec la commande &laquo;&nbsp;git svn dcommit&nbsp;&raquo; . J&#8217;ai l&#8217;impression que j&#8217;ai manqué quelque chose comme une opération &laquo;&nbsp;pull&nbsp;&raquo; en provenance de SVN et d&#8217;un &laquo;&nbsp;rebase&nbsp;&raquo; dans la foulée. Mais, étant le seul à travailler sur ce plugin, personne d&#8217;autre n&#8217;a fait évoluer le repository SVN parallèlement à mes modifications locales. Mystère !</p>
<p>Après de longues recherches sur cette erreur et aucune solution qui ne me permette de commiter et tagger dans svn, je trouve cet article qui me permet de repartir de zéro: <a href="http://danielbachhuber.com/2010/09/29/how-to-properly-use-git-with-wordpress-org-subversion/" target="_blank">http://danielbachhuber.com/2010/09/29/how-to-properly-use-git-with-wordpress-org-subversion/</a></p>
<p>La manipulation décrite rétablie le répertoire de travail local avec le contenu du SVN WordPress qui contient toujours la version précédente du plugin, puis, réinjecte les modifications qui sont dans le repository sur github. En gros, les étapes sont :</p>
<ol>
<li>sauvegarder les derniers developpements locaux (tar &#8230;) et mettre tout cela de coter au cas où &#8230;</li>
<li>recloner le repository svn en local dans un répertoire travail vierge</li>
<li>récupérer la dernière version github qui est à jour avec les dernières modifications (mais sauvegardées par ailleurs au cas où)</li>
<li>commiter sous svn et tagger</li>
</ol>
<p>&nbsp;</p>
<p>Et dans la pratique, cela donne :</p>
<p>* Recréer le répertoire local de travail</p>
<pre>cd &lt;wordpress plugin dir&gt;
rm -rf browse-content-by-my-solr-server
mkdir browse-content-by-my-solr-server</pre>
<p>&nbsp;</p>
<p>* Récupérer dans SVN le numéro de révision correspondant au dernier commit fait.</p>
<pre>svn log https://plugins.svn.wordpress.org/browse-content-by-my-solr-server/</pre>
<pre>------------------------------------------------------------------------
 r436435 | dbejean | 2011-09-11 20:06:54 +0200 (Dim, 11 sep 2011) | 1 line</pre>
<pre>Create tag 1.1.0
 ------------------------------------------------------------------------
 r436432 | dbejean | 2011-09-11 19:58:50 +0200 (Dim, 11 sep 2011) | 1 line</pre>
<pre>template 3
...</pre>
<p>On ne retient pas r436435 qui a été créé par une commande &laquo;&nbsp;git svn tag&nbsp;&raquo;, mais r436432.</p>
<p>&nbsp;</p>
<p>* Cloner le repository SVN dans le répertoire local de travail :</p>
<pre>git svn clone -s -r436432 https://plugins.svn.wordpress.org/browse-content-by-my-solr-server/
cd browse-content-by-my-solr-server
git svn fetch</pre>
<p>Note : &laquo;&nbsp;-s&nbsp;&raquo; est un raccourci pour   &laquo;&nbsp;-t tags -b branches -T trunk&nbsp;&raquo;</p>
<p>&nbsp;</p>
<p>* Ré-associer le répertoire local de travail au repository Github</p>
<pre>git remote add -f origin git@github.com:bejean/browse-content-by-my-solr-server.git
git checkout origin/master *
git add *
git commit -m "Updated from GitHub"</pre>
<p>&nbsp;</p>
<p>* Commiter et tagguer la nouvelle version du plugin dans le SVN WordPress</p>
<pre>git svn rebase
git svn dcommit
git svn tag "x.x.x"</pre>
<p>&nbsp;</p>
<p>Et voilà le plugin est livré !</p>
<p>Il ne me reste plus qu&#8217;à trouver ce qui a provoqué cette erreur afin quelle ne se reproduise plus.</p>
<p>&nbsp;</p>
<h3>Mise à jour du 18 mai 2012 :</h3>
<p>Pour l&#8217;utilisation de git et svn, je recommande la lecture de quelques articles :<br />
<a href="http://fredgnix.wordpress.com/2012/02/26/git-svn-en-dix-minutes/" target="_blank">git svn en dix minutes</a></p>
<p><a href="http://mindsharestrategy.com/2011/how-to-publish-a-wordpress-plugin-git/" target="_blank">How to Publish a WordPress Plugin – Git</a></p>
<p><a href="http://thereforei.am/2011/04/21/git-to-svn-automated-wordpress-plugin-deployment/" target="_blank">Git to SVN: Automated WordPress Plugin Deployment</a></p>
<p><a href="http://danielbachhuber.com/2010/09/29/how-to-properly-use-git-with-wordpress-org-subversion/" target="_blank">How to properly use Git with WordPress.org Subversion</a></p>
<p>Et donc tout le secret est dans la commande &laquo;&nbsp;git svn rebase&nbsp;&raquo;, ce qui donne une séquence de commandes similaire à celle-ci :</p>
<pre>git add ...
git rm -r ...
git commit -a -m 'xxx'
git svn rebase
git svn dcommit
git svn tag "xxx"</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/09/17/git-et-subversion-quand-plus-rien-ne-va/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySolrServer propose l&#8217;hébergement d&#8217;instances Solr</title>
		<link>http://www.eolya.fr/2011/06/05/mysolrserver-propose-lhebergement-dinstances-solr/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysolrserver-propose-lhebergement-dinstances-solr</link>
		<comments>http://www.eolya.fr/2011/06/05/mysolrserver-propose-lhebergement-dinstances-solr/#comments</comments>
		<pubDate>Sun, 05 Jun 2011 14:32:25 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Hébergement]]></category>
		<category><![CDATA[Lucene / Solr]]></category>
		<category><![CDATA[Moteur de recherche]]></category>
		<category><![CDATA[Sites à découvrir]]></category>
		<category><![CDATA[hosted]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[saas]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://www.zoonix.fr/?p=921</guid>
		<description><![CDATA[MySorlServer est un nouveau service web qui propose l&#8217;hébergement d&#8217;instances Solr sous la forme d&#8217;abonnements. Solr en mode SaaS répond entre autres à la difficulté pour un propriétaire de blog ou CMS de pouvoir utiliser les plugins ou extensions existantes pour Solr. En effet, disposer d&#8217;un hébergement Tomcat ou Jetty pour accueillir un serveur Solr [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zoonix.fr/uploads/2011/06/mysolrserver.png"><img class="alignleft size-full wp-image-933" title="mysolrserver" src="http://www.zoonix.fr/uploads/2011/06/mysolrserver.png" alt="" width="302" height="63" /></a><a href="http://www.mysolrserver.com">MySorlServer</a> est un nouveau service web qui propose l&#8217;hébergement d&#8217;instances <strong>Solr</strong> sous la forme d&#8217;abonnements. <strong>Solr en mode SaaS</strong> répond entre autres à la difficulté pour un propriétaire de blog ou CMS de pouvoir utiliser les plugins ou extensions existantes pour <strong>Solr</strong>. En effet, disposer d&#8217;un hébergement <strong>Tomcat</strong> ou <strong>Jetty</strong> pour accueillir un serveur Solr est souvent compliqué voir impossible sans recourir à la location d&#8217;un hébergement mutualisé complémentaire ou d&#8217;un serveur dédié.</p>
<p><strong>MySolrServer</strong> gère la mise en place et le paramétrage des instances <strong>Solr</strong> de façon transparente et ne nécessite donc pas de compétences <strong>Solr</strong> particulières. En quelques cliques de souris, une instance pré-paramétrée pour les plugins ou extensions <strong>Solr</strong> de <strong>WordPress</strong>, <strong>Joomla</strong>, <strong>eZ Publish</strong> ou <strong>Drupal</strong> est déployée et prête à l&#8217;emploi.</p>
<p><span id="more-921"></span></p>
<p>Pour l&#8217;utilisation avec d&#8217;autres <strong>CMS</strong> ou pour des besoins très spécifiques, il est possible de créée une instance de type <strong>API</strong> (ou plutôt RESTful).</p>
<p>L&#8217;utilisateur garde le contrôle total des fichiers de paramétrages <strong>Solr</strong> (synonymes, mots vides, &#8230;) au moyen d&#8217;une interface Web d&#8217;administration (le manager).</p>
<p>Cerise sur le gâteau, <strong>MySolrServer</strong> propose des instances de type <strong>Crawler</strong> afin d&#8217;indexer des sites web et disposer d&#8217;une interface de recherche complète. <strong>MySolrServer</strong> utilise le crawler <a href="http://www.crawl-anywhere.com/">Crawl Anywhere</a>.</p>
<p>Si vous souhaitez en savoir plus sur  <strong>MySolrServer</strong>, vous pouvez consulter <a href="http://www.mysolrserver.com/features/" target="_self">la liste des fonctionnalites</a>.</p>
<p>Si vous souhaitez voir des copies d&#8217;écran de l&#8217;interface web d&#8217;administration, vous pouvez consulter <a href="http://www.mysolrserver.com/documentation/">la documentation</a>.</p>
<p><strong>MySolrServer</strong> est actuellement en mode bêta avec quelques <a href="http://www.mysolrserver.com/testing-and-beta-periods-agenda-and-specific-use-conditions/">conditions d&#8217;utilisation temporaires durant cette période</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/06/05/mysolrserver-propose-lhebergement-dinstances-solr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Migration de Vmware Server 2.0 vers vSphere Hypervisor (ESXi 4.1)</title>
		<link>http://www.eolya.fr/2011/05/10/migration-de-vmware-server-2-0-vers-vsphere-hypervisor-esxi-4-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=migration-de-vmware-server-2-0-vers-vsphere-hypervisor-esxi-4-1</link>
		<comments>http://www.eolya.fr/2011/05/10/migration-de-vmware-server-2-0-vers-vsphere-hypervisor-esxi-4-1/#comments</comments>
		<pubDate>Tue, 10 May 2011 22:24:58 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Productivité]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[ESXi]]></category>
		<category><![CDATA[vSphere Hypervisor]]></category>

		<guid isPermaLink="false">http://www.zoonix.fr/?p=895</guid>
		<description><![CDATA[Dans l&#39;article Vmware server 2.0 sur h&#244;te OpenSuse 11.1 64 bits d&#39;avril 2009, j&#39;expliquais comment installer&#160;Vmware Server 2.0 sur un serveur h&#244;te OpenSuse 11.1 64 bits. Devant prochainement commander plusieurs nouveaux serveurs chez OVH, j&#39;envisage une solution Vmware vSphere Hypervisor qui remplace Vmware Server 2.0 comme solution de virtualisation gratuite. Afin de me faire la [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="vmware" class="alignleft size-full wp-image-233" height="46" src="http://www.zoonix.fr/uploads/2009/04/vmware.jpg" title="vmware" width="96" />Dans l&#39;article <a href="http://www.zoonix.fr/2009/04/26/vmware-server-20-sur-hote-opensuse-111-64-bits/">Vmware server 2.0 sur h&ocirc;te OpenSuse 11.1 64 bits</a> d&#39;avril 2009, j&#39;expliquais comment installer&nbsp;<strong>Vmware Server 2.0</strong> sur un serveur h&ocirc;te <strong>OpenSuse 11.1 64 bits</strong>. Devant prochainement commander plusieurs nouveaux serveurs chez OVH, j&#39;envisage une solution <strong>Vmware vSphere Hypervisor</strong> qui remplace Vmware Server 2.0 comme solution de virtualisation gratuite. Afin de me faire la main sur cette version, j&#39;ai d&eacute;cid&eacute; de migrer mon serveur Vmware Server 2.0 sous OpenSuse vers vSphere Hypervisor.<span id="more-895"></span></p>
<p>La premi&egrave;re chose a v&eacute;rifier avent de se lancer dans l&#39;installation de Vmware vSphere Hypervisor, c&#39;est <a href="http://www.vmware.com/resources/compatibility/search.php">la compatibilit&eacute; mat&eacute;rielle de votre serveur</a>. Par exemple, les 2 cartes r&eacute;seaux de la carte m&egrave;re ASUS P6T Deluxe V2 ne sont pas compatibles. J&#39;ai du les d&eacute;sactiver et utiliser &agrave; la place une carte r&eacute;seau <strong>Intel PRO 1000 GT PCI</strong>.&nbsp;</p>
<p>Les &eacute;tapes de la migration sont:</p>
<ul>
<li><a href="https://www.vmware.com/tryvmware/index.php?p=free-esxi&amp;lp=1">t&eacute;l&eacute;charger vSphere Hypervisor</a> sur le site Vmware et r&eacute;cup&eacute;rer une cl&eacute; de licence gratuite</li>
<li>r&eacute;cup&eacute;ration de toutes les vm h&eacute;berg&eacute;es sur le serveur OpenSuse sur un disque de backup. Ce disque doit &ecirc;tre accessible depuis un poste Windows XP ou Seven car les images qui s&#39;y trouvent serviront pour leur r&eacute;installation sur le serveur&nbsp;vSphere Hypervisor.</li>
<li>installation de&nbsp;vSphere Hypervisor. Suivre <a href="http://www.tuto-it.fr/InstallationVMwareESXi.php">ce guide</a> sur le site <strong>Tuto-IT</strong>. Apres l&#39;&eacute;tape imp&eacute;rative du choix d&#39;un mot de passe (le client vSphere ne peut pas se connecter au serveur sans mot de passe), il faut absolument en profiter pour autoriser les acc&egrave;s SSH &agrave; ESXi. Pour cela, aller dans le menu &quot;Troubleshooting options&quot;.</li>
<li>installation du client vSphere sur un poste Windows</li>
<li>installation Vmware vCenter Converter Standalone sur un poste Windows</li>
<li>importation des machine virtuelles</li>
</ul>
<p><strong>Probl&egrave;mes rencontr&eacute;s lors de l&#39;importation de mes machines virtuelles</strong></p>
<p><meta charset="utf-8" />Dans le r&eacute;capitulatif pr&eacute;-conversion, bien v&eacute;rifier que le disque dure est de type &quot;L&eacute;ger&quot; et non pas &quot;Plat&quot;. En mode &quot;Plat&quot;, la totalit&eacute; de l&#39;espace disque est pr&eacute;-allou&eacute; dans le datastore.</p>
<p>Vmware vCenter Converter ne reconnait pas automatiquement les distributions Debian. J&#39;ai du manuellement modifier le type de distribution en indiquant Debian 5.0 64 bits (pour Lenny et Squeeze). Plus tard, dans le&nbsp;client vSphere, la mise &agrave; jour automatique des Vmware tools se passera sans aucun soucis dans le mode automatique.</p>
<p><meta charset="utf-8" /></p>
<p>Je n&#39;ai pas r&eacute;ussi &agrave; importer 2 clients Windows XP Pro qui &eacute;taient dans Vmware Server 2.0. J&#39;ai du utiliser une machine virtuelle Windows XP qui tourne sous Vmware Fusion. J&#39;y ai remplac&eacute; le fichier vmdk par ceux des VM que je ne r&eacute;ussissais pas &agrave; importer.&nbsp;</p>
<p><strong>Les backups</strong></p>
<p>Dans vSphere Hypervisor, il n&#39;y a pas de solution de backup int&eacute;gr&eacute;e. Je vous conseille les scripts <strong>ghettoVCB</strong> disponibles sur le site de Vmware (du s&eacute;rieux donc) :</p>
<ul>
<li><a href="http://communities.vmware.com/docs/DOC-8760">sauvegarde</a></li>
<li><a href="http://communities.vmware.com/docs/DOC-10595">restauration</a></li>
</ul>
<p><strong>Templates</strong></p>
<p>Il n&#39;y a pas non plus de solution de VM Template que l&#39;on peut cloner pour mettre en place rapidement un nouveau serveur.</p>
<p>Pour contourner ce probl&egrave;me, j&#39;ai import&eacute; ma VM Debian 6.0 de base et je l&#39;ai nomm&eacute;e &quot;_TEMPLATE_DEBIAN_60_64B&quot;. Cette VM n&#39;a pas vocation &agrave; &ecirc;tre allum&eacute;e sauf une fois pour la mettre &agrave; jour (&quot;aptitude update&quot; et &quot;aptitude upgrade&quot;) et mettre &agrave; jour les Vmvare tools. &nbsp;</p>
<p>Pour d&eacute;ployer un nouveau serveur, je me connecte en ssh &agrave; ESXi, je copie le r&eacute;pertoire de la VM template sous un autre nom dans le m&ecirc;me datastore ou dans un autre. Puis, j&#39;enregistre la nouvelle VM dans ESXi avec la commande suivante :</p>
<p><span style="font-family:courier new,courier,monospace;">/bin/vim-cmd solo/registervm &lt;chemin_complet_du_fichier_vmx_de_la_vm_a_activer&gt;</span></p>
<p><meta charset="utf-8" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/05/10/migration-de-vmware-server-2-0-vers-vsphere-hypervisor-esxi-4-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;un serveur Linux Debian 6.0 (Squeeze)</title>
		<link>http://www.eolya.fr/2011/02/06/installation-dun-serveur-linux-debian-6-0-squeeze/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installation-dun-serveur-linux-debian-6-0-squeeze</link>
		<comments>http://www.eolya.fr/2011/02/06/installation-dun-serveur-linux-debian-6-0-squeeze/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 15:10:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[aptitude]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://www.zoonix.fr/?p=850</guid>
		<description><![CDATA[Debian 6.0 Squeeze est disponible depuis aujourd&#8217;hui. C&#8217;est l&#8217;occasion de mettre à jour l&#8217;article Installation d&#8217;un serveur Linux Debian qui à l&#8217;époque a été écrit pour une version Debian 5.0 Lenny. Pour cet article, je pars d&#8217;une image debian-6.0.0-amd64-netinst.iso. Je déroule la procédure d&#8217;installation simplement afin d&#8217;arriver à un serveur de base vierge d&#8217;interface graphique [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-126" title="debian1" src="http://www.zoonix.fr/uploads/2008/12/debian1.jpg" alt="debian1" width="84" height="88" /><strong>Debian 6.0 Squeeze</strong> est disponible depuis aujourd&#8217;hui. C&#8217;est l&#8217;occasion de mettre à jour l&#8217;article <a href="http://www.zoonix.fr/2008/12/15/installation-serveur-linux-debian/">Installation d&#8217;un serveur Linux Debian</a> qui à l&#8217;époque a été écrit pour une version <strong>Debian 5.0 Lenny</strong>.</p>
<p>Pour cet article, je pars d&#8217;une image debian-6.0.0-amd64-netinst.iso. Je déroule la procédure d&#8217;installation simplement afin d&#8217;arriver à un serveur de base vierge d&#8217;interface graphique et de tous logiciels sauf SSH. Je vais décrire maintenant les étapes de l&#8217;installation des packages complémentaires afin de disposer de Apache, MySQL, PHP, Java et Tomcat. Ceci peut vous intéresser, mais c&#8217;est également un aide mémoire pour moi-même. C&#8217;est un peu technique, mais je n&#8217;entre pas dans les détails.</p>
<p>Dans le précédent article j&#8217;utilisais le gestionnaire de package <strong>Apt</strong>. Je profite de cette mise à jour pour utiliser <strong>Aptitude</strong>. Afin que la gestion ds dépendance, les mises à jours et les suppressions fonctionnent correctement, il faut éviter d&#8217;utiliser alternativement les 2 outils sur un même serveur. Il faut donc faire attention à ne plus utiliser par réflexe apt-get et apt-cache.</p>
<p><span id="more-850"></span>Les commandes qui sont indiquées doivent être exécutées sous le compte root ou avec <strong>sudo </strong>(on va voir sudo plus loin).</p>
<p><strong>Mettre à jour les dépots Apt / Aptitude<br />
</strong></p>
<p><strong>Apt</strong> et <strong>Aptitude</strong>, sont les outils qui permettent d&#8217;installer des packages et de gérer les dépendances. Les 2 outils utilisent les mêmes dépots. La mise à jour en question a pour but de mettre à jour la liste des packages disponibles.</p>
<p>Je commence par modifier le fichier /etc/apt/sources.list pour ajouter les dépots contrib et non-free ainsi que pour désactiver le CDROM. Mon fichier contient ceci :</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_ - Official amd64 NETINST Binary-1 20110205-14:31]/ squeeze main</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#deb cdrom:[Debian GNU/Linux 6.0.0 _Squeeze_ - Official amd64 NETINST Binary-1 20110205-14:31]/ squeeze main</span>
&nbsp;
deb http<span style="color: #339933;">://</span>ftp<span style="color: #339933;">.</span>fr<span style="color: #339933;">.</span>debian<span style="color: #339933;">.</span>org<span style="color: #339933;">/</span>debian<span style="color: #339933;">/</span> squeeze main contrib non<span style="color: #339933;">-</span>free
deb<span style="color: #339933;">-</span>src http<span style="color: #339933;">://</span>ftp<span style="color: #339933;">.</span>fr<span style="color: #339933;">.</span>debian<span style="color: #339933;">.</span>org<span style="color: #339933;">/</span>debian<span style="color: #339933;">/</span> squeeze main contrib non<span style="color: #339933;">-</span>free
&nbsp;
deb http<span style="color: #339933;">://</span>security<span style="color: #339933;">.</span>debian<span style="color: #339933;">.</span>org<span style="color: #339933;">/</span> squeeze<span style="color: #339933;">/</span>updates main contrib non<span style="color: #339933;">-</span>free
deb<span style="color: #339933;">-</span>src http<span style="color: #339933;">://</span>security<span style="color: #339933;">.</span>debian<span style="color: #339933;">.</span>org<span style="color: #339933;">/</span> squeeze<span style="color: #339933;">/</span>updates main contrib non<span style="color: #339933;">-</span>free
&nbsp;
deb http<span style="color: #339933;">://</span>ftp<span style="color: #339933;">.</span>fr<span style="color: #339933;">.</span>debian<span style="color: #339933;">.</span>org<span style="color: #339933;">/</span>debian<span style="color: #339933;">/</span> squeeze<span style="color: #339933;">-</span>updates main contrib non<span style="color: #339933;">-</span>free
deb<span style="color: #339933;">-</span>src http<span style="color: #339933;">://</span>ftp<span style="color: #339933;">.</span>fr<span style="color: #339933;">.</span>debian<span style="color: #339933;">.</span>org<span style="color: #339933;">/</span>debian<span style="color: #339933;">/</span> squeeze<span style="color: #339933;">-</span>updates main contrib non<span style="color: #339933;">-</span>free</pre></div></div>

<p>Et enfin :</p>
<pre>aptitude update</pre>
<p><strong>Installation du serveur OpenSSH</strong></p>
<p>Dans mon installation de base, j&#8217;ai installé le serveur SSH sur le serveur. Si ce n&#8217;est pas fait, il faut installer <strong>OpenSSH</strong> depuis la console physique de serveur.</p>
<pre>aptitude install openssh-server</pre>
<p><strong>Création de l&#8217;utilisateur &laquo;&nbsp;dominique&nbsp;&raquo;</strong></p>
<pre>useradd -d /home/dominique -m -s /bin/bash dominique      

passwd</pre>
<p><strong>Installer sudo</strong></p>
<p><strong>sudo </strong>permet d&#8217;exécuter des commandes comme utilisateur root sans être connecté sous le compte root.</p>
<pre>aptitude install sudo</pre>
<p>Déclarer l&#8217;utilisateur dominique dans sudo en ajoutant la ligne suivante dans &laquo;&nbsp;<em>/etc/sudoers</em>&nbsp;&raquo;</p>
<pre>dominique ALL=(ALL) ALL</pre>
<p>A partir de là, tout se fait si possible sous le compte &laquo;&nbsp;dominique&nbsp;&raquo; (et utilisation de sudo pour les actions nécessitants les droits root).</p>
<p><strong>Augmentation des limites systèmes (optionnel)</strong></p>
<p>Pour mes besoins j&#8217;ai besoin d&#8217;augmenter certaines limites systèmes. Cela se fait en éditant le fichier  /etc/security/limits.conf</p>
<pre>vi /etc/security/limits.conf</pre>
<p>Personnellement, j&#8217;y ajoute les lignes suivantes :</p>
<pre>*                soft    nofile        8192
*                hard    nofile        16384
*                soft    stack         16384
*                hard    stack         32768</pre>
<p><strong>Installation de apache2.2</strong></p>
<pre>sudo aptitude install apache2</pre>
<p>Activer le mode rewrite</p>
<pre>sudo a2enmod rewrite</pre>
<pre>sudo /etc/init.d/apache2 restart</pre>
<p><strong>Installation de mysql server 5.1</strong></p>
<pre>sudo aptitude install mysql-server-5.1</pre>
<p><strong>Installation PHP 5</strong></p>
<p>J&#8217;ai besoin de PHP 5 et quelques librairies complémentaires (curl par exemple pour appeler des web services en http, mysql, PEAR, &#8230;).</p>
<pre>sudo aptitude install php5 php5-cli libapache2-mod-php5 php5-curl php5-gd php5-mysql php5-dev
sudo aptitude install locales-all</pre>
<p><strong>Installation et mise à jour de PHP PEAR</strong></p>
<pre>sudo aptitude install php-pear</pre>
<pre>sudo pear upgrade PEAR</pre>
<p>Puis installation de quelques modules Pear</p>
<pre>sudo pear install Mail Net_Smtp</pre>
<p><strong>Modification du php.ini</strong></p>
<p>Editer &laquo;&nbsp;/etc/php5/apache2.php.ini&nbsp;&raquo; et mettre</p>
<pre>output_buffering=4096</pre>
<p><strong>Installation d&#8217;un JDK</strong></p>
<p>On peut soit installer openJDK 6 ou Sun JDK 6</p>
<p><strong>openJDK<br />
</strong></p>
<pre>sudo aptitude install openjdk-6-jre openjdk-6-jdk</pre>
<p><strong>Sun JDK<br />
</strong></p>
<pre>sudo aptitude install sun-java6-jdk sun-java6-fonts</pre>
<p><strong>Installation de tomcat 6<br />
</strong></p>
<pre>sudo aptitude install tomcat6 tomcat6-admin</pre>
<p><strong>Installation de pdftotext</strong></p>
<pre>sudo aptitude install xpdf-utils</pre>
<p><strong>Installation de lftp</strong></p>
<p>lftp est un client ftp qui sera utile pour mettre les sauvegardes sur le serveur FTP mis a disposition par OVH.</p>
<pre>sudo aptitude install lftp</pre>
<p><strong>Paramétrage de apache</strong></p>
<p>Copier le fichier de configuration de mon virtualhost dans &laquo;&nbsp;<em>/etc/apache2/site-available</em>&laquo;&nbsp;,<br />
activer le site et relancer Apache.</p>
<pre>sudo a2ensite xxxxxx (ou xxxxxx est le nom du fichier .conf du virtualhost)
sudo /etc/init.d/apache2 reload</pre>
<p><strong>Paramétrage Tomcat</strong></p>
<p>Dans /var/lib/tomcat6/conf/server.xml, on vérifie que le connecteur non-SSL inclut l&#8217;attribut &laquo;&nbsp;URIEncoding=&nbsp;&raquo;UTF-8&#8243;&nbsp;&raquo;. C&#8217;est le cas apparemment par défaut maintenant.</p>
<pre>    &lt;!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --&gt;
    &lt;Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               URIEncoding="UTF-8"
               redirectPort="8443"/&gt;</pre>
<p>Sous Debian, Tomcat est très sécurisé. Une autre manière radicale de passer outre cette sécurisation est de la désactiver dans le fichier &laquo;&nbsp;/etc/init.d/tomcat6&#8243;, en indiquant :</p>
<pre>TOMCAT6_SECURITY=no</pre>
<p>Je constate que c&#8217;est la configuration par défaut maintenant. Par contre, je ne me permet ceci parce que je n&#8217;autorise l&#8217;accès à mon serveur Tomcat que localement. Dans /var/lib/tomcat6/conf/server.xml, j&#8217;ajoute une définition de valve au niveau engine :</p>
<pre>    &lt;Engine name="Catalina" defaultHost="localhost"&gt;
      &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127.0.0.1" deny=""/&gt;</pre>
<p>Je change également le fichier &laquo;&nbsp;/etc/default/tomcat6&#8243; pour lui indiquer le bon timezone et augmenter ses ressources mémoires. Editer le fichier &laquo;&nbsp;/etc/default/tomcat6&#8243;, pour modifier la ligne JAVA_OPTS=&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">JAVA_OPTS<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;-Djava.awt.headless=true -Xms256M -Xmx1024M -Duser.timezone=Europe/Paris -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC&quot;</span></pre></div></div>

<p>Relancer tomcat</p>
<pre>sudo /etc/init.d/tomcat6 restart</pre>
<p><strong>Installer le compilateur GCC et l&#8217;outil make</strong></p>
<pre>sudo aptitude install gcc g++ make</pre>
<p><strong>Installer memcached</strong></p>
<pre>sudo aptitude install memcached php5-memcache</pre>
<p>Dans <a href="http://www.zoonix.fr/2008/02/24/memcached-mise-en-cache-et-partage-de-donnees-entre-applications/">cet article</a>,  je décris memcached.</p>
<p>Pour son installation à partir des sources, suivre la procédure parfaitement décrite dans <a href="http://www.lullabot.com/articles/how_install_memcache_debian_etch" target="_blank">cet article</a>. Par contre, il faut vérifier quelles sont les dernières versions des modules à télécharger.</p>
<p><strong>Installer ntpdate<br />
</strong></p>
<pre>sudo aptitude install ntpdate</pre>
<p>Pour mettre à l&#8217;heure en utilisant le serveur de temps de l&#8217;observatoire de Paris</p>
<pre>sudo /usr/sbin/ntpdate ntp-p1.obspm.fr</pre>
<p>Dans la crontab ajouter la ligne suivante afin de synchroniser l&#8217;heure tous les matins à 3h</p>
<pre>0 3 * * * root /usr/sbin/ntpdate ntp-p1.obspm.fr &gt;/dev/null</pre>
<p><strong>Installer fail2ban</strong></p>
<p>En fonctionnement, un serveur s&#8217;expose à des attaques. <strong>Fail2ban </strong>permet de se protéger contre les attaques de masse sur certains ports TCP ou UDP en attente de connexion. Le premier protocole à protéger (le seul exposé à la livraison du serveur lorsque qu&#8217;il n&#8217;y a pas de logiciel complémentaire installé) est <strong>ssh</strong>. <strong>Ssh</strong> permet de prendre la main sur un serveur à distance. Mais si on connaît le port d&#8217;attente (22 par défaut) et le mot de passe root, on peut tout faire sur le serveur. <strong>Fail2ban</strong> scrute les logs des services en attente de connexion pour déterminer si une attaque est en cours et si donc il doit bloquer l&#8217;adresse IP de l&#8217;attaquant.</p>
<pre>sudo aptitude install fail2ban</pre>
<p>dans &laquo;&nbsp;<em>/etc/fail2ban/jail.conf&nbsp;&raquo;</em>, j&#8217;ajout mon ip perso dans les ip a ignorer</p>
<p>ignoreip = 127.0.0.1 82.xxx.xxx.xxx</p>
<p>redémarrage de fail2ban</p>
<pre>sudo /etc/init.d/fail2ban restart</pre>
<p>Concernant la sécurité, on peut  (et on doit) aller plus loin, mais cela n&#8217;ai pas couvert par cet article.</p>
<p><strong>Cas de l&#8217;installation sous Vmware server 2.0</strong></p>
<p>Dans ce cas, il faut installer les vmware tools. Pour cela :</p>
<p>1. Dans l&#8217;administration Web Vmware Server 2.0, cliquer sur &laquo;&nbsp;Install VMware Tools&nbsp;&raquo; du serveur en question</p>
<p>2. Ouvrir une console Vmware pour accéder au serveur, se connecter sous le compte root et exécuter les commandes suivantes :</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">aptitude install autoconf automake binutils cpp gcc linux<span style="color: #339933;">-</span>headers<span style="color: #339933;">-</span>$<span style="color: #009900;">&#40;</span>uname <span style="color: #339933;">-</span>r<span style="color: #009900;">&#41;</span> make psmisc
mount <span style="color: #339933;">/</span>media<span style="color: #339933;">/</span>cdrom
cp <span style="color: #339933;">/</span>media<span style="color: #339933;">/</span>cdrom<span style="color: #339933;">/</span>VMwareTools<span style="color: #339933;">-</span>7.7.6<span style="color: #339933;">-</span><span style="color: #0000dd;">203138</span>.<span style="color: #202020;">tar</span>.<span style="color: #202020;">gz</span> <span style="color: #339933;">/</span>tmp<span style="color: #339933;">/</span>.
<span style="color: #202020;">cd</span> <span style="color: #339933;">/</span>tmp<span style="color: #339933;">/</span>
tar xvfz VMwareTools<span style="color: #339933;">-</span>7.7.6<span style="color: #339933;">-</span><span style="color: #0000dd;">203138</span>.<span style="color: #202020;">tar</span>.<span style="color: #202020;">gz</span>
cd vmware<span style="color: #339933;">-</span>tools<span style="color: #339933;">-</span>distrib<span style="color: #339933;">/</span>
.<span style="color: #339933;">/</span>vmware<span style="color: #339933;">-</span>install.<span style="color: #202020;">pl</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/02/06/installation-dun-serveur-linux-debian-6-0-squeeze/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Solr et curl</title>
		<link>http://www.eolya.fr/2011/01/28/solr-et-curl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solr-et-curl</link>
		<comments>http://www.eolya.fr/2011/01/28/solr-et-curl/#comments</comments>
		<pubDate>Fri, 28 Jan 2011 17:45:14 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Lucene / Solr]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://www.zoonix.fr/?p=806</guid>
		<description><![CDATA[&#160; &#160; &#160; &#160; Voici quelques commandes simples et bien utiles utilisant curl afin de manipuler un index Solr. Supprimer un document &#224; partir de sa valeur de cl&#233; unique Supprimer un document &#224; partir d&#39;une requ&#234;te Vider totalement un index Forcer un commit d&#39;un index Forcer un optimize d&#39;un index Supprimer un document &#224; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zoonix.fr/uploads/2010/03/solr.jpg"><img alt="solr" class="alignleft size-full wp-image-477" height="75" src="http://www.zoonix.fr/uploads/2010/03/solr.jpg" title="solr" width="105" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Voici quelques commandes simples et bien utiles utilisant <strong>curl</strong> afin de manipuler un index <strong>Solr</strong>.</p>
<ul>
<li>Supprimer un document &agrave; partir de sa valeur de cl&eacute; unique</li>
<li>Supprimer un document &agrave; partir d&#39;une requ&ecirc;te</li>
<li>Vider totalement un index</li>
<li>Forcer un commit d&#39;un index</li>
<li>Forcer un optimize d&#39;un index</li>
</ul>
<p><span id="more-806"></span></p>
<p><strong>Supprimer un document &agrave; partir de sa valeur de cl&eacute; unique :</strong></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">curl <span style="color: #ddbb00;">&amp;quot;</span>http://server:port/solrpath/solrcore/update<span style="color: #ddbb00;">&amp;quot;</span> -H <span style="color: #ddbb00;">&amp;quot;</span>Content-Type: text/xml<span style="color: #ddbb00;">&amp;quot;</span> --data-binary <span style="color: #ddbb00;">&amp;quot;&amp;lt;</span>delete<span style="color: #ddbb00;">&amp;gt;&amp;lt;</span>id<span style="color: #ddbb00;">&amp;gt;</span>SP2514N<span style="color: #ddbb00;">&amp;lt;</span>/id<span style="color: #ddbb00;">&amp;gt;&amp;lt;</span>/delete<span style="color: #ddbb00;">&amp;gt;&amp;quot;</span></pre></div></div>

<p><strong>Supprimer un document &agrave; partir d&#39;une requ&ecirc;te :</strong></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">curl <span style="color: #ddbb00;">&amp;quot;</span>http://server:port/solrpath/solrcore/update<span style="color: #ddbb00;">&amp;quot;</span> -H <span style="color: #ddbb00;">&amp;quot;</span>Content-Type: text/xml<span style="color: #ddbb00;">&amp;quot;</span> --data-binary <span style="color: #ddbb00;">&amp;quot;&amp;lt;</span>delete<span style="color: #ddbb00;">&amp;gt;&amp;lt;</span>query<span style="color: #ddbb00;">&amp;gt;</span>type:book<span style="color: #ddbb00;">&amp;lt;</span>/query<span style="color: #ddbb00;">&amp;gt;&amp;lt;</span>/delete<span style="color: #ddbb00;">&amp;gt;&amp;quot;</span></pre></div></div>

<p><strong>Vider totalement un index :</strong></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">curl <span style="color: #ddbb00;">&amp;quot;</span>http://server:port/solrpath/solrcore/update<span style="color: #ddbb00;">&amp;quot;</span> -H <span style="color: #ddbb00;">&amp;quot;</span>Content-Type: text/xml<span style="color: #ddbb00;">&amp;quot;</span> --data-binary <span style="color: #ddbb00;">&amp;quot;&amp;lt;</span>delete<span style="color: #ddbb00;">&amp;gt;&amp;lt;</span>query<span style="color: #ddbb00;">&amp;gt;</span>*:*<span style="color: #ddbb00;">&amp;lt;</span>/query<span style="color: #ddbb00;">&amp;gt;&amp;lt;</span>/delete<span style="color: #ddbb00;">&amp;gt;&amp;quot;</span></pre></div></div>

<p><strong>Forcer un commit d&#39;un index :</strong></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">curl <span style="color: #ddbb00;">&amp;quot;</span>http://server:port/solrpath/solrcore/update<span style="color: #ddbb00;">&amp;quot;</span> -H <span style="color: #ddbb00;">&amp;quot;</span>Content-Type: text/xml<span style="color: #ddbb00;">&amp;quot;</span> --data-binary <span style="color: #ddbb00;">&amp;quot;&amp;lt;</span>commit/<span style="color: #ddbb00;">&amp;gt;&amp;quot;</span></pre></div></div>

<p><strong>Forcer un optimize d&#39;un index :</strong></p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">curl <span style="color: #ddbb00;">&amp;quot;</span>http://server:port/solrpath/solrcore/update<span style="color: #ddbb00;">&amp;quot;</span> -H <span style="color: #ddbb00;">&amp;quot;</span>Content-Type: text/xml<span style="color: #ddbb00;">&amp;quot;</span> --data-binary <span style="color: #ddbb00;">&amp;quot;&amp;lt;</span>optimize/<span style="color: #ddbb00;">&amp;gt;&amp;quot;</span></pre></div></div>

<p>&nbsp;</p>
<p>Pour plus d&#39;exemples, vous pouvez consulter cette page du <strong>Wiki Solr</strong> : <a href="http://wiki.apache.org/solr/UpdateXmlMessages" target="_blank">http://wiki.apache.org/solr/UpdateXmlMessages</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/01/28/solr-et-curl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Appliquer un patch à Solr</title>
		<link>http://www.eolya.fr/2011/01/24/appliquer-un-patch-a-solr/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=appliquer-un-patch-a-solr</link>
		<comments>http://www.eolya.fr/2011/01/24/appliquer-un-patch-a-solr/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 15:53:50 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Lucene / Solr]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://www.zoonix.fr/?p=793</guid>
		<description><![CDATA[Le temps qui s&#39;&#233;coule entre 2 versions de Solr est plut&#244;t long. Dans l&#39;interval, de nombreux correctifs sont r&#233;alis&#233;s voir m&#234;me de nouvelles fonctionnalit&#233;s impl&#233;ment&#233;es. Il est donc parfois n&#233;cessaire d&#39;appliquer un patch &#224; Solr (par exemple avec la version 1.4.1, si on veux que le composant spellchecker fonctionne en recherche distribu&#233;e, il faut appliquer [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zoonix.fr/uploads/2010/03/solr.jpg"><img alt="solr" class="alignleft size-full wp-image-477" height="75" src="http://www.zoonix.fr/uploads/2010/03/solr.jpg" title="solr" width="105" /></a>Le temps qui s&#39;&eacute;coule entre 2 versions de Solr est plut&ocirc;t long. Dans l&#39;interval, de nombreux correctifs sont r&eacute;alis&eacute;s voir m&ecirc;me de nouvelles fonctionnalit&eacute;s impl&eacute;ment&eacute;es. Il est donc parfois n&eacute;cessaire d&#39;appliquer un patch &agrave; Solr (par exemple avec la version 1.4.1, si on veux que le composant spellchecker fonctionne en recherche distribu&eacute;e, il faut appliquer le patch <a class="external" href="https://issues.apache.org/jira/browse/SOLR-785">SOLR-785</a>).</p>
<p>Voici la m&eacute;thode pour int&eacute;grer le patch suivant : <a class="external" href="https://issues.apache.org/jira/browse/SOLR-785">https://issues.apache.org/jira/browse/SOLR-785</a></p>
<ul>
<li>Commencer par r&eacute;cup&eacute;rer une distribution des sources de Solr (<a class="external" href="http://www.apache.org/dyn/closer.cgi/lucene/solr/">http://www.apache.org/dyn/closer.cgi/lucene/solr/</a>).</li>
<li>D&eacute;compresser l&#39;archive dans un r&eacute;pertoire. Pour l&#39;exemple on utilise /tmp, ce qui donne un r&eacute;pertoire /tmp/apache-solr-1.4.1</li>
<li>Dans /tmp/apache-solr-1.4.1, placer le fichier correspondant au patch (pour le patch SOLR-785, c&#39;est SOLR-785.patch)</li>
<li>Patcher<br />
		<code>cd /tmp/apache-solr-1.4.1<br />
		patch -p0 -i SOLR-785.patch</code></li>
<li>Recompiler<br />
		<code>ant clean<br />
		ant dist</code></li>
</ul>
<p>Le war compil&eacute; est dans le r&eacute;pertoire dist</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/01/24/appliquer-un-patch-a-solr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercurial : la gestion de source qui me convient</title>
		<link>http://www.eolya.fr/2011/01/23/mercurial-la-gestion-de-source-qui-me-convient-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mercurial-la-gestion-de-source-qui-me-convient-2</link>
		<comments>http://www.eolya.fr/2011/01/23/mercurial-la-gestion-de-source-qui-me-convient-2/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 16:59:40 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Productivité]]></category>
		<category><![CDATA[hg]]></category>
		<category><![CDATA[mercurial]]></category>

		<guid isPermaLink="false">http://www.zoonix.fr/?p=751</guid>
		<description><![CDATA[Cela fait un certain temps que je veux utiliser une solution de gestion de sources pour mes développements. J&#8217;ai longtemps tourné en rond autour d&#8217;une solution Subversion intégrée dans Eclipse avec les plugins Subversive ou Subclipse. Après plusieurs tentatives au fils des mois, je ne suis jamais parvenu à utiliser Subversion au quotidien et j&#8217;ai [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zoonix.fr/uploads/2011/01/mercurial-logo.png"><img class="alignleft size-full wp-image-689" title="logo_small" src="http://www.zoonix.fr/uploads/2011/01/mercurial-logo.png" alt="" /></a>Cela fait un certain temps que je veux utiliser une solution de gestion de sources pour mes développements. J&#8217;ai longtemps tourné en rond autour d&#8217;une solution <a href="http://subversion.tigris.org/" target="_blank">Subversion</a> intégrée dans <a href="http://www.eclipse.org/" target="_blank">Eclipse</a> avec les plugins <a href="http://www.eclipse.org/subversive/" target="_blank">Subversive</a> ou <a href="http://subclipse.tigris.org/" target="_blank">Subclipse</a>. Après plusieurs tentatives au fils des mois, je ne suis jamais parvenu à utiliser Subversion au quotidien et j&#8217;ai abandonné à chaque fois. En fait, j&#8217;ai trouvé cette solution trop contraignante pour 4 raisons : ma volonté de l&#8217;utiliser depuis Eclipse, l&#8217;obligation d&#8217;installer un serveur subversion, ne pas travailler en équipe sur des sources communs et le fait de faire un apprentissage de l&#8217;outil seul.</p>
<p>Depuis quelques semaines je collabore à un projet qui nécessite un travail en équipe et qui impose donc un outil de gestion de sources. N&#8217;ayant pas le choix, j&#8217;ai bien du m&#8217;y mettre et avec l&#8217;assistance de mes partenaires de travail, ça c&#8217;est finalement passé vite et plutôt facilement. Cet outil, c&#8217;est <a href="http://mercurial.selenic.com/" target="_blank">Mercurial</a> (également appelé Hg). <span id="more-751"></span></p>
<p>Je ne vais pas vous faire ici une étude comparée de Subversion et de Mercurial car ceci est déjà très bien fait sur le blog <a href="http://blog.pilotsystems.net/2009/05/tutorial-francais-mercurial-hg" target="_blank">PilotSystems</a>. Je dirai juste que contrairement à Subversion qui utilise un dépôt unique centralisé par tous les développeurs, Mercurial utilise 2 types de dépôt : un dépôt local et un dépôt central. L&#8217;avantage de ce système dans mon cas est que pour la plupart de mes projets, le dépôt local me suffit car je travail seul. Le dépôt local permet toutes les opérations dont on a besoin au minimum : commit, update revert, diff, tags, branch, &#8230;</p>
<p>Un autre point à l&#8217;avantage de Mercurial est que le dépot local est constitué d&#8217;une arborescence de fichiers simples à sauvegarder et que les sources ne sont pas pollués par des fichiers cachés dans chaque répertoires des sources.</p>
<p>Je n&#8217;utilise par Mercurial depuis Eclipse mais soit en ligne de commandes (il n&#8217;y a pas tant de commandes que ça) soit avec l&#8217;interface graphique<a href="http://jasonfharris.com/machg/" target="_blank"> MacHG</a>.</p>
<h3>Tutoriaux et arcticles</h3>
<p>Voici les bons tutoriaux que j&#8217;ai trouvé (par ordre de préférence) :</p>
<ul>
<li><a href="http://hginit.com/" target="_blank">HGInit : a Mercurial tutorial</a></li>
<li><a href="http://blog.pilotsystems.net/2009/05/tutorial-francais-mercurial-hg" target="_blank">Un tutorial en français sur l&#8217;utilisation de Mercurial</a></li>
<li><a href="http://hgbook.red-bean.com/read/index.html" target="_blank">Mercurial : the definitive guide<br />
</a></li>
</ul>
<p>Une très bonne série d&#8217;articles par <a href="http://stevelosh.com/" target="_blank">Steve Losh</a> sur l&#8217;utilisation des branches :</p>
<ul>
<li><a href="http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/" target="_blank">A Guide to Branching in Mercurial</a></li>
<li><a href="http://stevelosh.com/blog/2010/02/mercurial-workflows-branch-as-needed/" target="_blank">Mercurial Workflows: Branch As Needed</a></li>
<li><a href="http://stevelosh.com/blog/2010/05/mercurial-workflows-stable-default/" target="_blank">Mercurial Workflows: Stable &amp; Default</a></li>
<li><a href="http://stevelosh.com/blog/2010/06/mercurial-workflows-translation-branches/" target="_blank">Mercurial Workflows: Translation Branches<br />
</a></li>
</ul>
<h3>Outils de Merge et de Diff</h3>
<p>Tout d&#8217;abord, configurer l&#8217;outil de comparaison (diff) et d&#8217;assistance au merge. En ligne de commande, par défaut, il n&#8217;y a pas d&#8217;outil de diff et de merge actif et avec MacHg par défaut, c&#8217;est <strong>Filemerge</strong> qui est utilisé si <strong>XCode</strong> est installé. Le problème avec Filemerge, c&#8217;est qu&#8217;il ne réussi pas toujours à afficher les différences et qu&#8217;il ne peut pas comparer simultanément 3 versions d&#8217;un même fichier pour gérer efficacement les merges.</p>
<p>J&#8217;ai donc choisi d&#8217;installer <a href="http://www.sourcegear.com/diffmerge/" target="_blank">Diffmerge</a>. La procédure d&#8217;installation est bien documentée et simple (dans le fichier Readme). Il faut bien aller jusqu&#8217;au bout en installant les scripts de lancement en ligne de commande. Pour l&#8217;intégration à Mercurial, cela se passe dans le fichier <strong>~/.hgrc</strong> et c&#8217;est également bien documenté sur <a href="http://mercurial.selenic.com/wiki/DiffMerge" target="_blank">le wiki de Mercurial</a>. Pour une utilisation avec MacHg, il faut aller sur l&#8217;onglet &laquo;&nbsp;Advanced&nbsp;&raquo; des préférences de MacHg. Positionner les options de la zone &laquo;&nbsp;Merge and Diff Tool&nbsp;&raquo; comme indiqué dans la copie d&#8217;écran ci-dessous.</p>
<p style="text-align: center;"><a href="http://www.zoonix.fr/uploads/2011/01/Capture-d’écran-2011-01-24-à-09.43.231.png"><img title="MacHg" src="http://www.zoonix.fr/uploads/2011/01/Capture-d’écran-2011-01-24-à-09.43.231.png" alt="MacHg" /></a></p>
<p>&nbsp;</p>
<h3>Gestion des mots de passe par dépot</h3>
<p>Lors d&#8217;un accès aux dépôts centralisés, il est demandé un login. Il est possible de stocker ces login par dépôt dans le fichier <strong>~/.hgrc</strong>. Tout se passe dans la section &laquo;&nbsp;[auth]&nbsp;&raquo; comme indiqué dans cet exemple.</p>
<pre>[auth]
bb1.prefix = https://sources.depot1.org/
bb1.username = dominique
bb1.password = xxxx

bb2.prefix = https://sources.depot2.net/
bb2.username = dom
bb2.password = yyyy

...

bbN.prefix = https://sources.depotNN.fr/
bbN.username = domi
bbN.password = zzzz</pre>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><strong>Mise à jour du 19 septembre 2011 :</strong></span></p>
<p>Depuis l&#8217;écriture de cet article, j&#8217;ai également travaillé avec <strong>Git</strong> un autre outils de gestion de source. Tout comme Mercurial, Git est une solution comportant un  dépôt local et et un dépôt central. Bien que le principe soit le même, les commandes varient sensiblement et je trouve finalement Git plus complexe à utiliser que Mercurial. Je suis entre autre perturbé par l&#8217;absence de commandes simples similaire à hg incoming et hg outgoing.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/01/23/mercurial-la-gestion-de-source-qui-me-convient-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crawl Anywhere version 1.1.0 est disponible</title>
		<link>http://www.eolya.fr/2011/01/03/crawl-anywhere-version-1-1-0-est-disponible/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=crawl-anywhere-version-1-1-0-est-disponible</link>
		<comments>http://www.eolya.fr/2011/01/03/crawl-anywhere-version-1-1-0-est-disponible/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 10:04:58 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Lucene / Solr]]></category>
		<category><![CDATA[Moteur de recherche]]></category>
		<category><![CDATA[Crawler]]></category>
		<category><![CDATA[pipeline]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://www.zoonix.fr/?p=743</guid>
		<description><![CDATA[Crawl Anywhere est un crawler web, un pipeline de traitement des documents et un indexer Solr. Il offre une interface Web d&#39;administration qui permet de facilement g&#233;rer les diff&#233;rentes sources (sites web) &#224; crawler et indexer. Apr&#232;s plusieurs mises en production chez des clients et les diff&#233;rents retours d&#39;exp&#233;riences, un certain nombre de nouvelles fonctionnalit&#233;s [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zoonix.fr/uploads/2010/10/logo_small.jpg"><img alt="" class="alignleft size-full wp-image-689" height="54" src="http://www.zoonix.fr/uploads/2010/10/logo_small.jpg" title="logo_small" width="65" /></a><a href="http://www.crawl-anywhere.com/" target="_blank">Crawl Anywhere</a> est un crawler web, un pipeline de traitement des documents et un indexer Solr. Il offre une interface Web d&#39;administration qui permet de facilement g&eacute;rer les diff&eacute;rentes sources (sites web) &agrave; crawler et indexer.</p>
<p>Apr&egrave;s plusieurs mises en production chez des clients et les diff&eacute;rents retours d&#39;exp&eacute;riences, un certain nombre de nouvelles fonctionnalit&eacute;s ont &eacute;t&eacute; ajout&eacute;es &agrave; Crawl Anywhere. Une liste des principales nouvelles fonctionnalit&eacute;s est disponible sur le wiki dans la <a href="http://www.wiizio.com/confluence/display/CRAWLUSERS/Release+notes+v1.1.0">release note</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2011/01/03/crawl-anywhere-version-1-1-0-est-disponible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solr et PHP</title>
		<link>http://www.eolya.fr/2010/11/06/solr-et-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solr-et-php</link>
		<comments>http://www.eolya.fr/2010/11/06/solr-et-php/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 09:19:32 +0000</pubDate>
		<dc:creator>dominique</dc:creator>
				<category><![CDATA[Lucene / Solr]]></category>
		<category><![CDATA[Moteur de recherche]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Solr]]></category>

		<guid isPermaLink="false">http://www.zoonix.fr/?p=730</guid>
		<description><![CDATA[Voici une pr&#233;sentation slideshare de Solr ainsi que des exemples de code PHP avec l&#39;extension Apache Solr PECL. Un bon rappel des concepts de base. [slideshare id=5658889&#38;doc=zendconsolrphp-101103144414-phpapp02]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zoonix.fr/uploads/2010/03/solr.jpg"><img alt="solr" class="alignleft size-full wp-image-477" height="75" src="http://www.zoonix.fr/uploads/2010/03/solr.jpg" title="solr" width="105" /></a>Voici une pr&eacute;sentation <strong>slideshare</strong> de <a href="http://lucene.apache.org/solr/" target="_blank"><strong>Solr</strong></a> ainsi que des exemples de code PHP avec l&#39;extension Apache Solr PECL.</p>
<p>Un bon rappel des concepts de base.</p>
<p>[slideshare id=5658889&amp;doc=zendconsolrphp-101103144414-phpapp02]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eolya.fr/2010/11/06/solr-et-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

