<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.svn.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'function.svn-diff.php',
    1 => 'svn_diff',
    2 => 'Compare deux chemins, r&eacute;cursivement',
  ),
  'up' => 
  array (
    0 => 'ref.svn.php',
    1 => 'Fonctions SVN',
  ),
  'prev' => 
  array (
    0 => 'function.svn-delete.php',
    1 => 'svn_delete',
  ),
  'next' => 
  array (
    0 => 'function.svn-export.php',
    1 => 'svn_export',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/svn/functions/svn-diff.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.svn-diff" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">svn_diff</h1>
  <p class="verinfo">(PECL svn &gt;= 0.1.0)</p><p class="refpurpose"><span class="refname">svn_diff</span> &mdash; <span class="dc-title">Compare deux chemins, récursivement</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.svn-diff-description">
  <h3 class="title">Description</h3>
  <div class="methodsynopsis dc-description">
   <span class="modifier">function</span> <span class="methodname"><strong>svn_diff</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$path1</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$rev1</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$path2</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$rev2</code></span><br>): <span class="type"><a href="language.types.array.php" class="type array">array</a></span></div>

  <p class="simpara">
   Compare deux chemins, <code class="parameter">path1</code> et
   <code class="parameter">path2</code>, récursivement.
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="simpara">
    Ce n&#039;est pas un véritable utilitaire de comparaison. Seuls les fichiers
    locaux qui sont versionnés peuvent être comparés : les autres fichiers
    échoueront.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.svn-diff-parameters">
  <h3 class="title">Liste de paramètres</h3>
  <dl>
   
    <dt><code class="parameter">path1</code></dt>
    <dd>
     <p class="simpara">
      Premier chemin. Peut être une URL vers un fichier/dossier d&#039;un
      référentiel SVN ou un chemin vers un fichier/dossier local.
     </p>
     <blockquote class="note"><p><strong class="note">Note</strong>: <p class="simpara">Les chemins relatifs peuvent être résolus
    comme si le dossier de travail courant était celui qui contient le binaire PHP.
    Pour utiliser le dossier de travail du script appelant, il faut utiliser la fonction <span class="function"><a href="function.realpath.php" class="function">realpath()</a></span>
    ou dirname(__FILE__).</p></p></blockquote>
     <div class="warning"><strong class="warning">Avertissement</strong>
      <p class="simpara">
       Si un chemin vers un fichier local n&#039;a que des antislashs et aucun
       slashs, cette extension échouera. Remplacer toujours tous les
       antislashs avec des slashs lors de l&#039;utilisation de cette fonction.
      </p>
     </div>
    </dd>
   
   
    <dt><code class="parameter">rev1</code></dt>
    <dd>
     <p class="simpara">
      Numéro de révision du premier chemin. Utiliser la constante
      <strong><code><a href="svn.constants.php#constant.svn-revision-head">SVN_REVISION_HEAD</a></code></strong> pour spécifier la révision
      la plus récente.
     </p>
    </dd>
   
   
    <dt><code class="parameter">path2</code></dt>
    <dd>
     <p class="simpara">
      Deuxième chemin à comparer. Voir le paramètre
      <code class="parameter">path1</code> pour la description.
     </p>
    </dd>
   
   
    <dt><code class="parameter">rev2</code></dt>
    <dd>
     <p class="simpara">
      Numéro de révision du second chemin. Voir le paramètre
      <code class="parameter">rev1</code> pour la description.
     </p>
    </dd>
   
  </dl>

 </div>

 <div class="refsect1 returnvalues" id="refsect1-function.svn-diff-returnvalues">
  <h3 class="title">Valeurs de retour</h3>
  <p class="simpara">
   Retourne un tableau contenant 2 flux : le premier représente la sortie
   de la comparaison, et le second contient les erreurs. Les flux peuvent
   être lus en utilisant la fonction <span class="function"><a href="function.fread.php" class="function">fread()</a></span>. Retourne
   <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> ou <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> si une erreur survient.
  </p>
  <p class="simpara">
   La sortie du comparateur peut, par défaut, être au format de comparaison
   unifié Subversion, mais un
   <a href="http://svnbook.red-bean.com/en/1.2/svn.advanced.externaldifftools.html" class="link external">&raquo;&nbsp;moteur externe de
    comparaison</a> peut être utilisé, suivant la configuration SVN.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.svn-diff-examples">
  <h3 class="title">Exemples</h3>
  <div class="example" id="example-1">
   <p><strong>Exemple #1 Exemple d&#039;utilisation</strong></p>
   <div class="example-contents"><p>
    Cet exemple montre une utilisation basique de cette fonction et récupère
    le contenu depuis les flux :
   </p></div>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
</span><span style="color: #007700">list(</span><span style="color: #0000BB">$diff</span><span style="color: #007700">, </span><span style="color: #0000BB">$errors</span><span style="color: #007700">) = </span><span style="color: #0000BB">svn_diff</span><span style="color: #007700">(
    </span><span style="color: #DD0000">'http://www.example.com/svnroot/trunk/foo'</span><span style="color: #007700">, </span><span style="color: #0000BB">SVN_REVISION_HEAD</span><span style="color: #007700">,
    </span><span style="color: #DD0000">'http://www.example.com/svnroot/branches/dev/foo'</span><span style="color: #007700">, </span><span style="color: #0000BB">SVN_REVISION_HEAD
</span><span style="color: #007700">);
if (!</span><span style="color: #0000BB">$diff</span><span style="color: #007700">) exit;
</span><span style="color: #0000BB">$contents </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">;
while (!</span><span style="color: #0000BB">feof</span><span style="color: #007700">(</span><span style="color: #0000BB">$diff</span><span style="color: #007700">)) {
  </span><span style="color: #0000BB">$contents </span><span style="color: #007700">.= </span><span style="color: #0000BB">fread</span><span style="color: #007700">(</span><span style="color: #0000BB">$diff</span><span style="color: #007700">, </span><span style="color: #0000BB">8192</span><span style="color: #007700">);
}
</span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$diff</span><span style="color: #007700">);
</span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$errors</span><span style="color: #007700">);
</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$contents</span><span style="color: #007700">);
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

   <div class="example-contents"><p>L&#039;exemple ci-dessus va afficher :</p></div>
   <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Index: http://www.example.com/svnroot/trunk/foo
===================================================================
--- http://www.example.com/svnroot/trunk/foo        (.../foo) (revision 23)
+++ http://www.example.com/svnroot/branches/dev/foo (.../foo) (revision 27)
 // further diff output</pre>
</div>
   </div>
  </div>
  <div class="example" id="example-2">
   <p><strong>Exemple #2 Comparaison de deux révisions d&#039;un chemin du référentiel</strong></p>
   <div class="example-contents"><p>
    Cet exemple implémente un gestionnaire permettant
    à un utilisateur de comparer facilement deux révisions d&#039;un élément
    en utilisant un chemin de référentiel externe (la syntaxe par défaut est verbeuse) :
   </p></div>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
</span><span style="color: #007700">function </span><span style="color: #0000BB">svn_diff_same_item</span><span style="color: #007700">(</span><span style="color: #0000BB">$path</span><span style="color: #007700">, </span><span style="color: #0000BB">$rev1</span><span style="color: #007700">, </span><span style="color: #0000BB">$rev2</span><span style="color: #007700">) {
    return </span><span style="color: #0000BB">svn_diff</span><span style="color: #007700">(</span><span style="color: #0000BB">$path</span><span style="color: #007700">, </span><span style="color: #0000BB">$rev1</span><span style="color: #007700">, </span><span style="color: #0000BB">$path</span><span style="color: #007700">, </span><span style="color: #0000BB">$rev2</span><span style="color: #007700">);
}
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

  </div>
  <div class="example" id="example-3">
   <p><strong>Exemple #3 Comparaison, plus portable, de deux fichiers locaux</strong></p>
   <div class="example-contents"><p>
    Cet exemple implémente un gestionnaire permettant de comparer
    deux fichiers locaux, de façon plus portable en gérant le problème de
    <span class="function"><a href="function.realpath.php" class="function">realpath()</a></span> et le bogue sur les antislashs :
   </p></div>
   <div class="example-contents">
<div class="phpcode"><pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php
</span><span style="color: #007700">function </span><span style="color: #0000BB">svn_diff_local</span><span style="color: #007700">(</span><span style="color: #0000BB">$path1</span><span style="color: #007700">, </span><span style="color: #0000BB">$rev1</span><span style="color: #007700">, </span><span style="color: #0000BB">$path2</span><span style="color: #007700">, </span><span style="color: #0000BB">$rev2</span><span style="color: #007700">) {
    </span><span style="color: #0000BB">$path1 </span><span style="color: #007700">= </span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'\\'</span><span style="color: #007700">, </span><span style="color: #DD0000">'/'</span><span style="color: #007700">, </span><span style="color: #0000BB">realpath</span><span style="color: #007700">(</span><span style="color: #0000BB">$path1</span><span style="color: #007700">));
    </span><span style="color: #0000BB">$path2 </span><span style="color: #007700">= </span><span style="color: #0000BB">str_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'\\'</span><span style="color: #007700">, </span><span style="color: #DD0000">'/'</span><span style="color: #007700">, </span><span style="color: #0000BB">realpath</span><span style="color: #007700">(</span><span style="color: #0000BB">$path2</span><span style="color: #007700">));
    return </span><span style="color: #0000BB">svn_diff</span><span style="color: #007700">(</span><span style="color: #0000BB">$path1</span><span style="color: #007700">, </span><span style="color: #0000BB">$rev1</span><span style="color: #007700">, </span><span style="color: #0000BB">$path2</span><span style="color: #007700">, </span><span style="color: #0000BB">$rev2</span><span style="color: #007700">);
}
</span><span style="color: #0000BB">?&gt;</span></code></pre></div>
   </div>

  </div>
 </div>


 <div class="refsect1 notes" id="refsect1-function.svn-diff-notes">
  <h3 class="title">Notes</h3>
  <div class="warning"><strong class="warning">Avertissement</strong><p class="simpara">
 Cette fonction est <em>EXPERIMENTALE</em>. Le comportement de cette fonction, son nom, et toute la
 documentation autour de cette fonction peuvent changer sans préavis dans une prochaine version de PHP.
 Cette fonction doit être utilisée aux risques et périls de l&#039;utilisateur.
</p></div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.svn-diff-seealso">
  <h3 class="title">Voir aussi</h3>
  <ul class="simplelist">
   <li><a href="http://svnbook.red-bean.com/en/1.2/svn.ref.svn.c.diff.html" class="link external">&raquo;&nbsp;Documentation SVN sur la commande <code class="literal">&quot;svn diff&quot;</code></a></li>
  </ul>
 </div>


</div><?php manual_footer($setup); ?>