web-dev-qa-db-fra.com

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 @@
     "\"\\\"\"",
     "\":\"",
     "\"/\"",
+    "\"(\"",
+    "\")\"",
     "\".\"",
     "\"@\"",
     "\"\\\'\"",
60
omg

Le -u L'option que vous avez utilisée spécifie le format unifié. Dans ce format, les deux premières lignes sont un en-tête: --- est le fichier d'origine, +++ est le nouveau fichier et les horodatages.

@@ en-têtes de bloc

Cela est ensuite suivi par des morceaux (changer les morceaux) qui commencent par @@ -R,r +R,r @@ syntaxe.

Ce sont deux gammes, celle avec le - est la plage du morceau dans le fichier d'origine et celle avec le + la plage dans le nouveau fichier. R désigne le numéro de ligne où l'opération diff est lancée.

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

  • Chaque fois que vous supprimez une ligne, le +r le nombre sera plus petit que -r.
  • Chaque fois que vous ajoutez une ligne, le +r le nombre sera plus grand que -r
  • La modification d'une ligne ajoutera 0 à la +r nombre. (même portée de lignes)

Morceaux de lignes de code

Dans ces segments, les lignes sont identifiées comme des ajouts ou des suppressions - signifie supprimer, + signifie addition. Les lignes qui n'ont pas changé dans ce segment n'auront ni + ou - 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 ajoutés, rien n'a été supprimé.

Vous pouvez trouver beaucoup plus d'informations sur la syntaxe en effectuant une recherche Google pour les différences unifiées.

91
Andre Miller

L'ancien nom de fichier

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

Le nouveau nom de 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 bloc de l'ancien fichier, y compris les lignes de contexte (donc total des lignes qui ont un - ou rien devant eux);
  • +4: le morceau commence à la ligne 4 du nouveau fichier;
  • 12: nombre de lignes dans le bloc dans le nouveau fichier, y compris les lignes de contexte (donc total des lignes qui ont un + ou rien devant eux).

Remarque: 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 notez que le bloc dans le nouveau fichier commence 3 lignes plus loin car le bloc précédent a ajouté une valeur nette de 3 lignes.

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

Le + les caractères signifient que ces lignes ont été ajoutées depuis la dernière version de NutchAnalysisConstants.Java. Le @@ la ligne vous indique que le diff a sauté dans une autre section du fichier, dans ce cas, la ligne 39 dans l'original ou la ligne 43 dans la nouvelle.

1
John G

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

-r to diff signifie "diff récursif", bien que dans ce cas, il ne fait rien puisque vous différez des fichiers, pas des répertoires.

-B signifie ignorer les modifications qui n'impliquent 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 (vous donnant ainsi le contenu complet du fichier dans le répertoire1).

-u signifie utiliser le format de sortie unifié, qui n'est pris en charge que par GNU diff et GNU patch.

Quant à ce que signifie la sortie, cela link peut vous être utile.

0
FreeMemory