86 votes

Quel est le format d'un fichier patch ?

Que signifie ce qui suit ?

diff -rBNu src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java
--- src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java 2009-03-10 11:34:01.000000000 -0700
+++ src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java  2009-03-10 14:11:55.000000000 -0700
@@ -4,9 +4,12 @@

+  int CJK = 21;
+  int DIGIT = 22;

   int DEFAULT = 0;

   String[] tokenImage = {
     "<EOF>",
+    "\"OR\"",
     "<WORD>",
     "<ACRONYM>",
     "<SIGRAM>",
@@ -39,6 +42,8 @@
     "\"\\\"\"",
     "\":\"",
     "\"/\"",
+    "\"(\"",
+    "\")\"",
     "\".\"",
     "\"@\"",
     "\"\\\'\"",

126voto

Andre Miller Points 6713

En -u que vous avez utilisée spécifie le format unifié. Dans ce format, les deux premières lignes constituent un en-tête : --- est le fichier original, +++ est le nouveau fichier, et les timestamps.

@@ en-têtes de bloc

Il est ensuite suivi par des chunks (hunks de changement) qui commencent par l'élément @@ -R,r +R,r @@ la syntaxe.

Ce sont deux gammes, celle avec le - est l'intervalle pour le chunk dans le fichier original, et celui avec l'indice + la gamme dans le nouveau fichier. Le site R désigne le numéro de ligne où l'opération de diff est lancée.

Les chiffres après la virgule sont le nombre de lignes concernées dans chaque fichier .

  • Chaque fois que vous supprimer une ligne, le +r le numéro sera plus petit que -r .
  • Chaque fois que vous ajouter une ligne, le +r le numéro sera plus grand que -r
  • La modification d'une ligne ajoutera 0 au +r numéro. (même portée des lignes)

Morceaux de lignes de code

Dans ces morceaux, les lignes sont identifiées comme des ajouts ou des suppressions. - signifie supprimer, + signifie l'ajout de moyens. Les lignes qui n'ont pas changé dans ce chunk n'auront ni + o - devant.

Dans votre exemple, cela signifie qu'il y a deux morceaux, ou sections, qui ont changé entre les deux fichiers et les lignes avec + y sont les nouveaux ajouts, rien n'a été supprimé.

Vous pouvez trouver beaucoup plus d'informations sur la syntaxe en faisant une recherche google sur unified diff.

24voto

qwertzguy Points 1021

L'ancien nom du fichier

--- src.orig/java/org/apache/nutch/analysis/NutchAnalysisConstants.java 2009-03-10 11:34:01.000000000 -0700

Le nouveau nom du fichier

+++ src/java/org/apache/nutch/analysis/NutchAnalysisConstants.java  2009-03-10 14:11:55.000000000 -0700
  • -4 : le morceau commence à la ligne 4 de l'ancien fichier (y compris les lignes de contexte) ;
  • 9 nombre de lignes dans le chunk de l'ancien fichier, y compris les lignes de contexte (donc le total des lignes qui ont un caractère - ou rien en face d'eux) ;
  • +4 : le morceau commence à la ligne 4 dans le nouveau fichier ;
  • 12 nombre de lignes dans le chunk du nouveau fichier, y compris les lignes de contexte (donc le total des lignes qui ont un caractère + ou rien en face d'eux).

Avis : J'ai changé le diff pour inclure une ligne modifiée, donc une ligne supprimée suivie d'une ligne ajoutée.

@@ -4,9 +4,12 @@

+  int CJK = 21;
+  int DIGIT = 22;

-  int DEFAULT = 0;
+  int DEFAULT = 42;

   String[] tokenImage = {
     "<EOF>",
+    "\"OR\"",
     "<WORD>",
     "<ACRONYM>",
     "<SIGRAM>",

Comme ci-dessus, mais remarquez que le chunk dans le nouveau fichier commence 3 lignes plus loin parce que le chunk précédent a ajouté une valeur nette de 3 lignes.

@@ -39,6 +42,8 @@
     "\"\\\"\"",
     "\":\"",
     "\"/\"",
+    "\"(\"",
+    "\")\"",
     "\".\"",
     "\"@\"",
     "\"\\\'\"",

1voto

John G Points 2347

En + signifient que ces lignes ont été ajoutées depuis la dernière version de l'application NutchAnalysisConstants.java . Le site @@ vous indique que le diff a sauté à une autre section du fichier, dans ce cas la ligne 39 dans l'original, ou la ligne 43 dans le nouveau.

0voto

FreeMemory Points 4742

Cela dépend de ce que vous demandez. Diff vous montre les différences entre deux fichiers. Dans votre cas, vous différez NutchAnalysisConstants.java de deux endroits différents et de générer des informations sur ces différences.

-r à diff signifie "diff récursif", bien que dans ce cas cela ne fasse rien puisque vous différez des fichiers, pas des répertoires.

-B signifie ignorer les modifications qui ne concernent que des lignes vides.

-N signifie que si dans le répertoire1 j'ai un fichier, mais qu'il n'est pas présent dans le répertoire2, diff devrait le traiter comme si le fichier était présent mais vide dans le répertoire2 (ce qui vous donne effectivement le contenu complet du fichier dans le répertoire1).

-u signifie utiliser le format de sortie unifié, qui est seulement supporté par GNU diff et GNU patch.

Quant à la signification de la sortie, voici lien peut vous être utile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X