Git 🌙
Français â–Ÿ Topics â–Ÿ Latest version â–Ÿ git-format-patch last updated in 2.46.0

NOM

git-format-patch - Prépare les rustines pour la soumission par courriel

SYNOPSIS

git format-patch [-k] [(-o|--output-directory) <rép.> | --stdout]
		   [--no-thread | --thread[=<style>]]
		   [(--attach|--inline)[=<limite>] | --no-attach]
		   [-s | --signoff]
		   [--signature=<signature> | --no-signature]
		   [--signature-file=<fichier>]
		   [-n | --numbered | -N | --no-numbered]
		   [--start-number <n>] [--numbered-files]
		   [--in-reply-to=<id-message >] [--suffix=.<sfx>]
		   [--ignore-if-in-upstream] [--always]
		   [--cover-from-description=<mode>]
		   [--rfc|=<rfc>]] [--subject-prefix=<préfixe-sujet >]
		   [(--reroll-count|-v) <n>]
		   [--to=<email>] [--cc=<courriel>]
		   [--[no-]cover-letter] [--quiet]
		   [--[no-]encode-email-headers]
		   [--no-notes | --notes[=<réf>]]
		   [--interdiff=<précédent>]
		   [--range-diff=<précédent> [--creation-factor=<pourcent>]]
		   [--filename-max-length=<n>]
		   [--progress]
		   [<options-diff-communes>]
		   [ <depuis> | <plage-de-révisions> ]

DESCRIPTION

PrĂ©pare chaque commit non fusionnĂ© avec sa "rustine" dans un "message" par commit, formatĂ© pour ressembler Ă  une boĂźte aux lettres UNIX. La sortie de cette commande est pratique pour la soumission par courriel ou pour l’utilisation de git am.

Un « message » généré par la commande se compose de trois parties :

  • Un bref en-tĂȘte de mĂ©tadonnĂ©es qui commence par From <commit> avec un horodatage fixe Mon Sep 17 00:00:00 2001 pour aider des programmes comme "file(1)" Ă  reconnaĂźtre que le fichier est une sortie de cette commande, des champs qui enregistrent l’identitĂ© de l’auteur, la date de l’auteur, et le titre de la modification (le premier paragraphe du message du journal de validation).

  • Le deuxiĂšme paragraphe et les suivants du message du journal de validation.

  • La "rustine", qui est la sortie "diff -p --stat" (voir git-diff[1]) entre le commit et son parent.

Le message du journal et la rustine sont séparés par une ligne à trois tirets.

Il existe deux façons de spécifier les commits sur lesquels opérer.

  1. Un seul commit, <depuis>, spĂ©cifie que les commits menant au sommet de la branche courante qui ne sont pas dans l’historique qui mĂšne Ă  <depuis> doivent ĂȘtre Ă©mis.

  2. L’expression gĂ©nĂ©rique <plage-de-rĂ©visions> (voir la section "SPECIFIER LES REVISIONS" dans gitrevisions[7]) sĂ©lectionne les commits dans la plage spĂ©cifiĂ©e.

La premiĂšre rĂšgle est prioritaire dans le cas d’un seul <commit>. Pour appliquer la deuxiĂšme rĂšgle, c’est-Ă -dire tout formater depuis le dĂ©but de l’historique jusqu’Ă  <commit>, utilisez l’option --root : git format-patch --root <commit>. Si vous souhaitez formater uniquement <commit> lui-mĂȘme, vous pouvez le faire avec git format-patch -1 <commit>.

Par dĂ©faut, chaque fichier de sortie est numĂ©rotĂ© sĂ©quentiellement Ă  partir de 1, et utilise la premiĂšre ligne du message de validation (traitĂ© pour la sĂ©curitĂ© des chemins) comme nom de fichier. Avec l’option --numbered-files, les noms des fichiers de sortie ne seront que des numĂ©ros, sans la premiĂšre ligne du message de livraison ajoutĂ©e. Les noms des fichiers de sortie sont affichĂ©s sur la sortie standard, sauf si l’option --stdout est spĂ©cifiĂ©e.

Si -o est spĂ©cifiĂ©, les fichiers de sortie sont crĂ©Ă©s dans <rĂ©p.>. Sinon, ils sont crĂ©Ă©s dans le rĂ©pertoire de travail actuel. Le chemin par dĂ©faut peut ĂȘtre dĂ©fini avec l’option de configuration format.outputDirectory. L’option -o est prioritaire sur format.outputDirectory. Pour stocker les rustines dans le rĂ©pertoire de travail actuel mĂȘme si format.outputDirectory pointe ailleurs, utilisez -o .. Tous les composants du rĂ©pertoire seront crĂ©Ă©s.

Par dĂ©faut, le sujet d’une rustine unique est "[PATCH]" suivi de la concatĂ©nation des lignes du message de validation jusqu’Ă  la premiĂšre ligne vide (voir la section DISCUSSION de git-commit[1]).

Lorsque plusieurs rustines sont Ă©mises, le prĂ©fixe du sujet sera plutĂŽt "[PATCH n/m]". Pour forcer l’ajout de 1/1 pour une seule rustine, utilisez -n. Pour omettre les numĂ©ros de rustine dans le sujet, utilisez -N.

Avec --thread, git-format-patch gĂ©nĂ©rera les en-tĂȘtes In-Reply-To et References pour que le deuxiĂšme courrier de rustine et les suivants apparaissent comme des rĂ©ponses au premier courrier ; cela gĂ©nĂšre aussi un en-tĂȘte Message-ID pour rĂ©fĂ©rence ultĂ©rieure.

OPTIONS

-p
--no-stat

Générer des correctifs normaux sans aucun diffstat.

-U<n>
--unified=<n>

Générer des diffs avec <n> lignes de contexte au lieu des trois habituelles.

--output=<fichier>

Sortie vers un fichier spécifique au lieu de stdout.

--output-indicator-new=<caractĂšre>
--output-indicator-old=<caractĂšre>
--output-indicator-context=<caractĂšre>

SpĂ©cifier le caractĂšre utilisĂ© pour indiquer les lignes nouvelles, anciennes ou contextuelles dans la rustine gĂ©nĂ©rĂ©e. Normalement, il s’agit de +, - et ' ' respectivement.

--indent-heuristic

Activer l’heuristique qui dĂ©cale les limites des sections de diff pour rendre les rustines plus faciles Ă  lire. C’est l’option par dĂ©faut.

--no-indent-heuristic

DĂ©sactiver l’heuristique d’indentation.

--minimal

Passer plus de temps pour s’assurer que le diff le plus petit possible est produit.

--patience

GĂ©nĂ©rer un diff en utilisant l’algorithme « patience diff ».

--histogram

GĂ©nĂ©rer un diff en utilisant l’algorithme « diff histogramme ».

--anchored=<texte>

GĂ©nĂ©rer un diff en utilisant l’algorithme « diff ancré ».

Cette option peut ĂȘtre spĂ©cifiĂ©e plus d’une fois.

Si une ligne existe dans la source et la destination, n’existe qu’une seule fois, et dĂ©marre avec ce texte, cet algorithme tente d’empĂȘcher qu’elle apparaisse comme une suppression ou une addition dans la sortie. L’algorithme « patience diff » est utilisĂ© en interne.

--diff-algorithm={patience|minimal|histogram|myers}

Choisir un algorithme de diff. Les variantes sont comme suit :

default, myers

L’algorithme de diff avide. C’est actuellement celui par dĂ©faut.

minimal

Passer plus de temps pour s’assurer que le diff le plus petit possible est produit.

patience

Utiliser l’algorithme « patience diff » pour la gĂ©nĂ©ration de rustine.

histogram

Cet algorithme Ă©tend l’algorithme patience pour « supporter les Ă©lĂ©ments communs de faible frĂ©quence ».

Par exemple, si vous avez configurĂ© la variable diff.algorithm Ă  une valeur autre que celle par dĂ©faut et souhaitez utiliser la valeur par dĂ©faut, alors vous devez utiliser l’option --diff-algorithm=default.

--stat[=<largeur>[,<largeur-de-nom>[,<nombre>]]]

GĂ©nĂ©rer un diffstat. Par dĂ©faut, autant d’espace que nĂ©cessaire sera utilisĂ© pour la partie du nom de fichier et le reste pour la partie de graphe. La largeur maximum est par dĂ©faut la largeur du terminal, ou 80 colonnes si non connectĂ© Ă  un terminal, et peut ĂȘtre outrepassĂ© avec <largeur>. La largeur du nom de fichier peut ĂȘtre limitĂ©e en fournissant une autre largeur <largeur-de-nom> aprĂšs une virgule ou en rĂ©glant diff.statNameWidth=<largeur>. La largeur de la partie du graphe peut ĂȘtre limitĂ©e en utilisant --stat-graph-width=<largeur> ou en rĂ©glant `diff.statGraphWidth=<largeur>. L’utilisation de --stat ou --stat-graph-width affecte toutes les commandes qui gĂ©nĂšrent un graphique de stat, tandis que rĂ©gler diff.statNameWidth or diff.statGraphWidth n’affecte pas git format-patch. En ajoutant un troisiĂšme paramĂštre <nombre>, vous pouvez limiter la sortie aux premiĂšres <nombre> lignes, suivies de ... s’il y en a plus.

Ces paramĂštres peuvent aussi ĂȘtre positionnĂ©s individuellement avec --stat-width=<largeur>, --stat-name-width=<largeur-de-nom> et --stat-count=<nombre>.

--compact-summary

Afficher un rĂ©sumĂ© condensĂ© de l’information d’entĂȘte Ă©tendu telle que les crĂ©ations ou les suppressions de fichier (« nouveau » ou « disparu », optionnellement « +l » si c’est un lien symbolique) et les modifications de mode (« +x » ou « -x » pour l’ajout et la suppression du bit exĂ©cutable respectivement) dans le diffstat. L’information est affichĂ©e entre la partie nom de fichier et la partie graphe. Implique --stat.

--numstat

Similaire à --stat, mais afficher le nombre de lignes ajoutées ou supprimées en notation décimale et le nom de chemin sans abréviation, pour le rendre plus facile à traiter automatiquement. Pour les fichiers binaires, affiche deux - au lieu de 0 0.

--shortstat

N’affiche que la derniĂšre ligne du format --stat contenant le nombre total de fichiers modifiĂ©s, de mĂȘme que le nombre de lignes ajoutĂ©es et supprimĂ©es.

-X[<param1,param2,…​>]
--dirstat[=<param1,param2,…​>]

Afficher la distribution de la quantitĂ© relative de modifications pour chaque sous-rĂ©pertoire. Le comportement de --dirstat peut ĂȘtre personnalisĂ© en lui passant une liste de paramĂštres sĂ©parĂ©s par des virgules. Les valeurs par dĂ©faut sont contrĂŽlĂ©es par la variable de configuration diff.dirstat (voir git-config[1]). Les paramĂštres suivants sont disponibles :

changes

Calculer les valeurs de dirstat en comptant les lignes supprimĂ©es de la source ou ajoutĂ©es dans la destination. Ceci ignore la quantitĂ© de purs mouvements de code dans un fichier. En d’autres termes, le rĂ©arrangement de lignes dans un fichier n’est pas comptĂ© autant que les autres modifications. C’est le comportement par dĂ©faut quand aucun paramĂštre n’est fourni.

lines

Calculer les valeurs dirstat en faisant l’analyse diff normal par ligne, et en additionnant les totaux de lignes ajoutĂ©es/supprimĂ©es. (Pour les fichiers binaires, compter plutĂŽt les sections de 64 octets, puisque les fichiers binaires n’ont pas de concept de ligne). C’est un comportement de --dirstat plus onĂ©reux que le comportement changes, mais il compte les lignes rĂ©arrangĂ©es dans un fichier autant que les autres modifications. La sortie rĂ©sultante est cohĂ©rente avec ce que vous obtiendriez avec d’autres options --*stat.

files

Calculer les valeurs dirstat en comptant le nombre de fichiers changĂ©s. Chaque fichier modifiĂ© compte de façon Ă©gale dans l’analyse dirstat. C’est le comportement --dirstat le moins cher en termes de calcul, puisqu’il n’a pas du tout besoin d’analyser le contenu du fichier.

cumulative

Compter les modifications dans un rĂ©pertoire enfant pour le rĂ©pertoire parent. Notez qu’en utilisant cumulative, la somme des pourcentages constatĂ©s peut dĂ©passer 100 %. Le comportement par dĂ©faut (non cumulatif) peut ĂȘtre spĂ©cifiĂ© avec le paramĂštre noncumulative.

<limite>

Un paramÚtre entier qui spécifie un pourcentage limite (3% par défaut). Les répertoires contribuant moins que ce pourcentage de modifications ne sont pas affichés dans la sortie.

Exemple : ce qui suit va compter les fichiers modifiés, tout en ignorant les répertoires qui contiennent moins de 10 % de la quantité totale de fichiers modifiés et en accumulant les totaux des répertoires enfants dans les répertoires parents : --dirstat=files,10,cumulative.

--cumulative

Synonyme de --dirstat=cumulative

--dirstat-by-file[=<param1,param2>…​]

Synonyme de --dirstat=files,<param1>,<param2>…​.

--summary

Afficher un rĂ©sumĂ© condensĂ© d’information d’entĂȘte Ă©tendu tel que les crĂ©ations, les renommages et les modifications de mode.

--no-renames

DĂ©sactiver la dĂ©tection de renommage, mĂȘme si le fichier de configuration indique de le faire par dĂ©faut.

--[no-]rename-empty

S’il faut utiliser les blobs vides comme source de renommage.

--full-index

Au lieu de montrer quelques-uns des premiers caractĂšres, montrer les noms complets des objets blob des images prĂ© et post sur la ligne d’index lors de la gĂ©nĂ©ration de la sortie au format patch.

--binary

En plus de --full-index, afficher un diff binaire qui peut ĂȘtre appliquĂ© avec git-apply.

--abbrev[=<n>]

Au lieu de montrer le nom de l’objet avec les 40 caractĂšres hexadĂ©cimaux dans le format de diff brut et les lignes d’entĂȘte de l’arbre de diff, montrer le prĂ©fixe le plus court, d’une longueur d’au moins <n> chiffres hexadĂ©cimaux, qui renvoie Ă  l’objet de maniĂšre unique. Dans le format de sortie de rustine de correctif, --full-index a une prioritĂ© plus Ă©levĂ©e, c’est-Ă -dire si --full-index est spĂ©cifiĂ©, les noms de blob complets seront affichĂ©s indĂ©pendamment de --abbrev. Un nombre de chiffres diffĂ©rent de celui par dĂ©faut peut ĂȘtre spĂ©cifiĂ© avec --abbrev=<n>.

-B[<n>][/<m>]
--break-rewrites[=[<n>][/<m>]]

Casser les modifications de réécriture complÚte en paires de suppression et création. Cela sert deux objectifs :

Cela affecte la façon dont un changement qui Ă©quivaut Ă  une rĂ©Ă©criture totale d’un fichier apparaĂźt non pas comme une sĂ©rie de suppressions et d’insertions mĂ©langĂ©es avec quelques lignes qui (par hasard) correspondent entre les deux versions comme contexte, mais comme une simple suppression de tout ce qui est ancien suivi d’une simple insertion de tout ce qui est nouveau, et le nombre m contrĂŽle cet aspect de l’option -B (par dĂ©faut 60 %). -B/70% spĂ©cifie que moins de 30 % de l’original doit rester dans le rĂ©sultat pour que Git le considĂšre comme une rĂ©Ă©criture totale (autrement, la rustine rĂ©sultante sera une sĂ©rie de suppressions et d’insertions mĂ©langĂ©es avec des lignes de contexte).

UtilisĂ© avec -M, un fichier complĂštement rĂ©Ă©crit est aussi considĂ©rĂ© comme la source d’un renommage (habituellement -M ne considĂšre que les fichiers qui ont disparu comme source de renommage), et le nombre n contrĂŽle le niveau de l’option -B (par dĂ©faut, 50 %). -B20% signifie qu’une modification avec des additions et des suppressions reprĂ©sentant 20 % ou plus du contenu du fichier est considĂ©rĂ©e pour ĂȘtre utilisĂ©e comme une source possible pour un renommage en un autre fichier.

-M[<n>]
--find-renames[=<n>]

DĂ©tecter les renommages. Si n est spĂ©cifiĂ©, c’est un seuil d’index de similaritĂ© (c-Ă -d la quantitĂ© d’addition/suppression comparĂ© Ă  la taille du fichier). Par exemple, -M90% signifie que Git considĂ©rera un couple suppression/ajout comme renommage si plus de 90 % du fichier n’a pas changĂ©. Sans le signe %, le nombre doit ĂȘtre lu comme une fraction prĂ©cĂ©dĂ©e du point dĂ©cimal. -M5 devient 0,5, tout comme -M50%. De mĂȘme, -M05 est identique Ă  -M5%. Pour limiter la dĂ©tection Ă  des renommages exacts, utilisez -M100%. L’index de similaritĂ© par dĂ©faut est 50%.

-C[<n>]
--find-copies[=<n>]

DĂ©tecter les copies aussi bien que les renommages. Voir aussi --find-copies-harder. Si n est spĂ©cifiĂ©, il a la mĂȘme signification que pour -M<n>.

--find-copies-harder

Pour des raisons de performance, par dĂ©faut, l’option -C trouve des copies seulement si le fichier original de la copie a Ă©tĂ© modifiĂ© dans le mĂȘme ensemble de modifications. Ce drapeau fait inspecter Ă  la commande les fichiers non modifiĂ©s comme candidats comme source de copie. C’est une opĂ©ration trĂšs chĂšre pour des projets importants, donc Ă  utiliser avec prĂ©caution. SpĂ©cifier plusieurs fois l’option -C a le mĂȘme effet.

-D
--irreversible-delete

Omettre la prĂ©-image pour des suppressions, c-Ă -d n’afficher que l’entĂȘte mais pas la diff entre la prĂ©-image et /dev/null. La rustine rĂ©sultante n’est pas destinĂ©e Ă  ĂȘtre appliquĂ©e avec patch ou git apply  ; C’est seulement pour les personnes qui veulent juste se concentrer sur une revue des modifications. De plus, la sortie manque clairement d’assez d’information pour appliquer la rustine en inverse, mĂȘme manuellement, d’oĂč le nom de l’option.

Lorsqu’utilisĂ© conjointement avec -B, omettre aussi la prĂ©-image dans la partie suppression d’une paire suppression/crĂ©ation.

-l<num>

Les options -M et -C impliquent quelques Ă©tapes prĂ©liminaires qui peuvent dĂ©tecter des sous-ensembles de renommages/copies Ă  moindre coĂ»t, suivies d’une partie pour le reste qui compare toutes les destinations non appariĂ©es restantes Ă  toutes les sources pertinentes. (Pour les renommages, seules les sources non appariĂ©es restantes sont pertinentes ; pour les copies, toutes les sources originales sont pertinentes). Pour N sources et destinations, cette vĂ©rification exhaustive est en O(N^2). Cette option empĂȘche la partie exhaustive de la dĂ©tection des renommages/copies de s’exĂ©cuter si le nombre de fichiers source/destination impliquĂ©s dĂ©passe le nombre spĂ©cifiĂ©. La valeur par dĂ©faut est diff.renameLimit. Notez qu’une valeur de 0 est traitĂ©e comme illimitĂ©e.

-O<fichier-d-ordre>

ContrĂŽler l’ordre dans lequel les fichiers apparaissent dans la sortie. Ceci passe outre la variable de configuration diff.orderFile (voir git-config[1]). Pour annuler diff.orderFile, utiliser -O/dev/null.

L’ordre en sortie est dĂ©terminĂ© par l’ordre des motifs glob dans <fichier-d-ordre>. Tous les fichiers dont le nom de chemin correspond au premier motif sont affichĂ©s en premier, tous les fichiers dont le nom de chemin correspond au second motif (mais pas au premier) sont affichĂ©s ensuite, et ainsi de suite. Tous les fichiers dont les noms de chemin qui ne correspondent Ă  aucun motif sont affichĂ©s en dernier, comme s’il y avait un motif ramasse-tout Ă  la fin du fichier. Si de multiples noms de chemin ont le mĂȘme rang (ils correspondent avec le mĂȘme motif mais pas de motifs antĂ©rieurs), leur ordre relatif d’affichage est l’ordre normal.

<fichier-d-ordre> est analysé comme suit :

  • Les lignes blanches sont ignorĂ©es, de sorte qu’elles peuvent ĂȘtre utilisĂ©es comme sĂ©parateurs pour la lisibilitĂ©.

  • Les lignes commençant par un diĂšse ("#") sont ignorĂ©es, elles peuvent donc ĂȘtre utilisĂ©es comme commentaires. Ajoutez une barre oblique inverse ("\") au dĂ©but du motif s’il doit commencer par un diĂšse.

  • Toutes les autres lignes contiennent un motif unique.

Les motifs ont la mĂȘme syntaxe et sĂ©mantique que les motifs utilisĂ©s pour fnmatch(3) sans le drapeau FNM_PATHNAME, sauf qu’un nom de chemin correspond aussi Ă  un motif si la suppression de n’importe quel nombre de composants finaux du nom de chemin correspond au motif. Par exemple, le motif "foo*bar" correspond Ă  "fooasdfbar" et "foo/bar/baz/asdf" mais pas Ă  "foobarx".

--skip-to=<fichier>
--rotate-to=<fichier>

Supprimer les noms des fichiers avant <fichier> dans la sortie (c’est-Ă -dire "skip to"), ou les dĂ©placer Ă  la fin de la sortie (c’est-Ă -dire "rotate to"). Ces options servent principalement lors de la commande git difftool, et peuvent ne pas ĂȘtre trĂšs utiles ailleurs.

--relative[=<chemin>]
--no-relative

Lorsque lancĂ© depuis un sous-rĂ©pertoire du projet, il peut lui ĂȘtre indiquĂ© d’exclure les modifications hors du rĂ©pertoire et d’afficher les noms de chemins relativement Ă  lui avec cette option. Quand vous n’ĂȘtes pas dans un sous-rĂ©pertoire (par ex. dans un dĂ©pĂŽt nu), vous pouvez nommer quel sous-rĂ©pertoire par rapport auquel afficher la sortie en fournissant un argument <chemin>. L’option --no-relative peut ĂȘtre utilisĂ©e pour annuler l’option de configuration diff.relative et l’option --relative prĂ©cĂ©dente.

-a
--text

Traiter tous les fichiers comme texte.

--ignore-cr-at-eol

Ignorer les retours chariot en fin de ligne lors de la comparaison.

--ignore-space-at-eol

Ignorer les modifications d’espaces en fin de ligne.

-b
--ignore-space-change

Ignorer les modifications de nombre d’espaces. Cela ignore les espaces en fin de ligne et considĂšre toutes les autres sĂ©quences d’un caractĂšre blanc ou plus comme Ă©quivalentes.

-w
--ignore-all-space

Ignorer les espaces lors de la comparaison de lignes. Ceci ignore les diffĂ©rences mĂȘme si une ligne a des espaces quand l’autre n’en a aucun.

--ignore-blank-lines

Ignorer les modifications dont les lignes sont blanches.

-I<regex>
--ignore-matching-lines=<regex>

Ignorer les modifications dont toutes les lignes correspondent Ă  <regex>. Cette option peut ĂȘtre spĂ©cifiĂ©e plusieurs fois.

--inter-hunk-context=<lignes>

Afficher le contexte entre des sections de diff, jusqu’au nombre spĂ©cifiĂ© de lignes, fusionnant de ce fait les sections qui sont proches. Par dĂ©faut, diff.interHunkContext ou 0 si l’option de configuration n’est pas configurĂ©e.

-W
--function-context

Afficher l’ensemble de la fonction comme lignes de contexte pour chaque modification. Les noms de fonction sont dĂ©terminĂ©s de la mĂȘme maniĂšre que git diff gĂ©nĂšre sur les en-tĂȘtes de sections de rustines(voir DĂ©finir un en-tĂȘte personnalisĂ© dans gitattributes[5]).

--ext-diff

Permettre l’exĂ©cution d’un assistant externe de diffĂ©rence. Si vous dĂ©finissez un pilote externe de diffĂ©rence avec gitattributes[5], vous avez besoin d’utiliser cette option avec git-log[1] et compagnie.

--no-ext-diff

DĂ©sactiver les pilotes de diff externes.

--textconv
--no-textconv

Permettre (ou dĂ©sactiver) le lancement des filtres externes de conversion en texte lors de la comparaison de fichiers binaires. Voir gitattributes[5] pour plus de dĂ©tails. Comme les filtres textconv sont typiquement des conversions Ă  sens unique, la diff rĂ©sultante est adaptĂ©e Ă  la consommation humaine, mais ne peut pas ĂȘtre appliquĂ©e. Pour cette raison, les filtres textconv sont activĂ©s par dĂ©faut seulement pour git-diff[1] et git-log[1], mais pas pour git-format-patch[1] ou les commandes de plomberie de diff.

--ignore-submodules[=<quand>]

Ignorer les modifications Ă  des sous-modules lors de la gĂ©nĂ©ration du diff. <quand> peut valoir "none" (aucun), "untracked" (non-suivi), "dirty" (sale) ou "all" (tout) qui est la valeur par dĂ©faut. L’utilisation de "none" va considĂ©rer comme modifiĂ©s les sous-modules quand ils contiennent soit des fichiers non-suivis ou modifiĂ©s, ou si sa HEAD diffĂšre du commit enregistrĂ© dans le super-projet, et peut ĂȘtre utilisĂ© pour passer outre tout rĂ©glage de l’option ignore dans git-config[1] ou gitmodules[5]. Quand "untracked" est utilisĂ©, les sous-modules ne sont pas considĂ©rĂ©s sales quand ils ne contiennent que du contenu non suivi (mais ils sont quand mĂȘme scannĂ©s pour trouver du contenu modifiĂ©). L’utilisation de "dirty" ignore toutes les modifications Ă  l’arbre de travail des sous-modules ; seules les modifications aux commits stockĂ©s dans le super-projet sont affichĂ©es (c’Ă©tait le comportement jusqu’Ă  1.7.0). La valeur "all" cache toutes les modifications des sous-modules.

--src-prefix=<préfixe>

Afficher le préfixe de source fourni au lieu de "a/".

--dst-prefix=<préfixe>

Afficher le préfixe de destination fourni au lieu de "b/".

--no-prefix

N’afficher aucun prĂ©fixe ni de source, ni de destination.

--default-prefix

Utiliser les préfixes source et destination par défaut ("a/" et "b/"). Cela surcharge les variables de configuration telles que configuration telle que diff.noprefix, diff.srcPrefix, diff.dstPrefix, et diff.mnemonicPrefix (voir git-config(1)).

--line-prefix=<préfixe>

Préfixer avec une chaßne additionnelle chaque ligne de la sortie.

--ita-invisible-in-index

Par dĂ©faut, une entrĂ©e ajoutĂ©e par "git add -N" apparaĂźt comme un fichier vide existant dans "git diff" et un nouveau fichier dans "git diff --cached". Cette option fait apparaĂźtre l’entrĂ©e comme un fichier nouveau dans "git diff" et non existant dans "git diff --cached". Cette option peut ĂȘtre inversĂ©e avec --ita-visible-in-index. Les deux options sont expĂ©rimentales et peuvent ĂȘtre retirĂ©es dans le futur.

Pour une explication plus détaillée sur ces options communes, voir aussi gitdiffcore[7].

-<n>

Préparer les rustines à partir des <n> commits les plus récents.

-o <rép.>
--output-directory <rép.>

Utiliser <rép.> pour stocker les fichiers résultants, au lieu du répertoire de travail actuel.

-n
--numbered

Nommer la sortie au format [PATCH n/m], mĂȘme avec une seule rustine.

-N
--no-numbered

Nommer la sortie au format [PATCH].

--start-number <n>

démarrer la numérotation des patchs à <n> au lieu de 1.

--numbered-files

Les noms des fichiers de sortie seront une simple séquence de nombres sans la premiÚre ligne par défaut du commit ajouté.

-k
--keep-subject

Ne pas enlever/ajouter [PATCH] de la premiĂšre ligne du message du journal de validation.

-s
--signoff

Ajouter une ligne terminale Signed-off-by au message de commit, en utilisant votre identitĂ© pour validateur. RĂ©fĂ©rez-vous Ă  l’option de contre-signature dans git-commit[1] pour plus d’information.

--stdout

Afficher tous les commits sur la sortie standard au format mbox, au lieu de crĂ©er un fichier pour chacun d’entre eux.

--attach[=<séparateur>]

CrĂ©er une piĂšce jointe multipart/mixte, dont la premiĂšre partie est le message de validation et la deuxiĂšme partie la rustine elle-mĂȘme, avec Content-Disposition : attachment.

--no-attach

DĂ©sactiver la crĂ©ation d’une piĂšce jointe, en remplaçant le paramĂštre de configuration.

--inline[=<séparateur>]

CrĂ©er une piĂšce jointe multipart/mixte, dont la premiĂšre partie est le message de validation et la deuxiĂšme partie la rustine elle-mĂȘme, avec Content-Disposition : inline.

--thread[=<style>]
--no-thread

ContrĂŽle l’ajout des en-tĂȘtes In-Reply-To et References pour que le deuxiĂšme courrier et les suivants apparaissent comme des rĂ©ponses au premier. ContrĂŽle Ă©galement la gĂ©nĂ©ration de l’en-tĂȘte Message-ID Ă  rĂ©fĂ©rencer.

L’argument optionnel <style> peut ĂȘtre soit shallow soit deep. Le filage shallow fait de chaque courrier une rĂ©ponse Ă  la tĂȘte de la sĂ©rie, oĂč la tĂȘte est choisie parmi la lettre d’accompagnement, le --in-reply-to, et le premier courrier de correction, dans cet ordre. Le filage deep fait de chaque courrier une rĂ©ponse au prĂ©cĂ©dent.

La valeur par défaut est --no-thread, sauf si la configuration format.thread est définie. --thread sans argument est équivalent à --thread=shallow.

Attention, le comportement par dĂ©faut de git send-email est d’arranger les emails en enfilade lui-mĂȘme. Si vous voulez que git format-patch s’occupe de la mise en fil, vous devrez vous assurer que le la mise en file est dĂ©sactivĂ©e pour git send-email.

--in-reply-to=<id-message>

Faire en sorte que le premier message (ou tous les messages si --no-thread est spĂ©cifiĂ©) apparaisse comme une rĂ©ponse au <id-message> donnĂ©, ce qui Ă©vite de casser les fils de discussion lors d’une nouvelle sĂ©rie de patchs.

--ignore-if-in-upstream

Ne pas inclure une rustine qui correspond à un commit dans <jusque>..<depuis>. Ceci examinera tous les commits atteignables depuis <depuis> mais pas depuis <jusque> et les comparera avec les rustines en cours de génération, et toute rustine qui correspond sera ignorée.

--always

Inclure les rustines pour les commits qui n’introduisent aucun changement, qui sont ignorĂ©s par dĂ©faut.

--cover-from-description=<mode>

ContrĂŽle les parties de la lettre d’introduction qui seront automatiquement remplies Ă  l’aide de la description de la branche.

Si <mode> est message ou default, le sujet de la lettre d’introduction sera rempli avec un texte de remplacement. Le corps de la lettre d’introduction sera rempli avec la description de la branche. C’est le mode par dĂ©faut lorsqu’aucune configuration ou option de ligne de commande n’est spĂ©cifiĂ©e.

Si <mode> est subject, le premier paragraphe de la description de la branche alimentera le sujet de la lettre d’introduction. Le reste de la description constituera le corps de la lettre d’introduction.

Quand <mode> est auto, si le premier paragraphe de la description de la branche est supérieur à 100 octets, alors le mode sera message, sinon subject sera utilisé.

Si <mode> est none, le sujet et le corps de la lettre d’introduction seront remplis avec du texte de remplacement.

--description-file=<fichier>

Utiliser le contenu de <fichier> au lieu de la description de la branche pour gĂ©nĂ©rer la lettre de d’introduction.

--subject-prefix=<préfixe-de-sujet>

Au lieu du prĂ©fixe standard [PATCH] dans la ligne d’objet, utiliser plutĂŽt '[<prĂ©fixe-de-sujet>]. Cela peut ĂȘtre utilisĂ© pour nommer une sĂ©rie de rustines, et peut ĂȘtre combinĂ© avec l’option --numbered.

La variable de configuration format.subjectPrefix peut Ă©galement ĂȘtre utilisĂ©e pour configurer un prĂ©fixe de sujet Ă  appliquer Ă  un dĂ©pĂŽt donnĂ© pour toutes les rustine . Ceci est souvent utile pour les listes de diffusion qui reçoivent des rustines pour plusieurs dĂ©pĂŽts et peut ĂȘtre utilisĂ© pour lever l’ambiguĂŻtĂ© des rustines(avec une valeur de par exemple "PATCH mon-projet").

--filename-max-length=<n>

Au lieu de la longueur standard de 64 octets, les noms de fichiers de sortie générés sont réduits à environ <n> octets (une valeur trop courte sera augmentée silencieusement à une longueur raisonnable). La valeur par défaut est la valeur de la variable de configuration format.filenameMaxLength, ou 64 si non configuré.

--rfc[=<rfc>]

Préfixe la chaßne _ <rfc>_ (par défaut "RFC") au préfixe de sujet. Comme le préfixe de sujet par défaut est "PATCH", vous obtiendrez "RFC PATCH" par défaut.

RFC signifie "Request For Comments" ("Demande pour commentaires") ; utilisez-la lors de l’envoi d’une rustine expĂ©rimentale pour discussion plutĂŽt que d’application. "--rfc=WIP" peut Ă©galement ĂȘtre un moyen utile pour indiquer qu’une rustine n’est pas encore complĂšte ("WIP" signifie "Work In Progress" "Travaux en cours").

Si la convention de la communautĂ© pour une chaĂźne supplĂ©mentaire particuliĂšre est de l’avoir aprĂšs le prĂ©fixe de sujet, la chaĂźne _ <rfc>_ peut ĂȘtre prĂ©fixĂ©e avec un tiret ("-") pour indiquer que le reste de la chaĂźne <rfc> devrait ĂȘtre annexĂ©e au sujet prĂ©fixe, p.ex. --rfc='-(WIP)' rĂ©sulte en "PATCH (WIP)".

-v <n>
--reroll-count=<n>

Marquer la sĂ©rie comme la <n>iĂšme itĂ©ration du sujet. Les noms des fichiers de sortie sont prĂ©cĂ©dĂ©s de v<n>, et le prĂ©fixe du sujet ("PATCH" par dĂ©faut, mais configurable via l’option --subject-prefix) a ` v<n>` ajoutĂ©. Par exemple, --reroll-count=4 peut produire le fichier v4-0001-add-makefile.patch qui a "Subject : [PATCH v4 1/20] Add makefile". <n> n’a pas besoin d’ĂȘtre un nombre entier (par exemple, "--reroll-count=4.4", ou "--reroll-count=4rev2" sont autorisĂ©s), mais l’inconvĂ©nient d’utiliser un tel nombre de rerolls est que le range-diff/interdiff avec la version prĂ©cĂ©dente n’indique pas exactement Ă  quelle version la nouvelle iteration est comparĂ©e.

--to=<courriel>

Ajoute un en-tĂȘte To: aux en-tĂȘtes du courriel. Ceci s’ajoute Ă  tous les en-tĂȘtes configurĂ©s, et peut ĂȘtre utilisĂ© plusieurs fois. La forme nĂ©gative --no-to Ă©limine tous les en-tĂȘtes To: ajoutĂ©s jusqu’Ă  prĂ©sent (depuis la configuration ou la ligne de commande).

--cc=<courriel>

Ajoute un en-tĂȘte Cc: aux en-tĂȘtes du courriel. Ceci s’ajoute Ă  tous les en-tĂȘtes configurĂ©s, et peut ĂȘtre utilisĂ© plusieurs fois. La forme nĂ©gative --no-cc Ă©limine tous les en-tĂȘtes Cc: ajoutĂ©s jusqu’Ă  prĂ©sent (depuis la configuration ou la ligne de commande).

--from
--from=<ident>

Utiliser ident dans l’en-tĂȘte From: de chaque courriel de commit. Si l’identifiant de l’auteur du commit n’est pas textuellement identique au ident fourni, placer un en-tĂȘte From: dans le corps du message avec l’auteur original. Si aucun ident n’est fourni, utiliser l’identifiant du validateur.

Notez que cette option n’est utile que si vous envoyez rĂ©ellement les courriel et que vous voulez vous identifier comme l’expĂ©diteur, mais conserver l’auteur original (et git am rĂ©cupĂ©rera correctement l’en-tĂȘte in-body). Notez Ă©galement que git send-email gĂšre dĂ©jĂ  cette transformation pour vous, et cette option ne devrait pas ĂȘtre utilisĂ©e si vous envoyez le rĂ©sultat Ă  git send-email.

--[no-]force-in-body-from

Avec l’expĂ©diteur du courriel spĂ©cifiĂ© par l’option --from, par dĂ©faut, un "From :" dans le corps du message pour identifier l’auteur rĂ©el du commit est ajoutĂ© en haut du message du journal des validations si l’expĂ©diteur est diffĂ©rent de l’auteur. Avec cette option, le "From :" dans le corps du message est ajoutĂ© mĂȘme si l’expĂ©diteur et l’auteur ont le mĂȘme nom et la mĂȘme adresse, ce qui peut aider si le logiciel de liste de diffusion confond l’identitĂ© de l’expĂ©diteur. La valeur par dĂ©faut est la valeur de la variable de configuration format.forceInBodyFrom.

--add-header=<entĂȘte>

Ajoute un entĂȘte arbitraire aux entĂȘtes du courriel. Ceci s’ajoute Ă  tous les entĂȘtes configurĂ©s, et peut ĂȘtre utilisĂ© plusieurs fois. Par exemple, --add-header="Organisation : git-foo". La forme nĂ©gative --no-add-header Ă©limine tous les entĂȘtes (To:, Cc:, et personnalisĂ©s) ajoutĂ©s jusqu’ici depuis la configuration ou la ligne de commande.

--[no-]cover-letter

En plus des rustine, gĂ©nĂ©rer un fichier de lettre d’introduction contenant la description de la branche, le shortlog et le diffstat global. Vous pouvez remplir une description dans le fichier avant de l’envoyer.

--encode-email-headers
--no-encode-email-headers

Encoder les entĂȘtes de courriel qui contiennent des caractĂšres non ASCII avec le "Q-encoding" (dĂ©crit dans la RFC 2047), au lieu d’afficher les entĂȘtes textuellement. La valeur par dĂ©faut est la valeur de la variable de configuration format.encodeEmailHeaders.

--interdiff=<précédent>

Pour aider Ă  la revue, insĂ©rer un interdiff dans la lettre d’introduction, ou comme commentaire de la rustine d’une sĂ©rie d’une seule rustine, montrant les diffĂ©rences entre la version prĂ©cĂ©dente de la sĂ©rie de rustines et la sĂ©rie en cours de formatage. prĂ©cĂ©dent est une rĂ©vision unique nommant la pointe de la sĂ©rie prĂ©cĂ©dente qui partage une base commune avec la sĂ©rie en cours de formatage (par exemple git format-patch --cover-letter --interdiff=feature/v1 -3 feature/v2).

--range-diff=<précédent>

Pour aider Ă  la revue, insĂ©rer un range-diff (voir git-range-diff[1]) dans la lettre d’introduction, ou comme commentaire de la rustine d’une sĂ©rie d’une seule rustine, montrant les diffĂ©rences entre la version prĂ©cĂ©dente de la sĂ©rie de rustines et la sĂ©rie en cours de formatage. prĂ©cĂ©dent peut ĂȘtre une rĂ©vision unique nommant la pointe de la sĂ©rie prĂ©cĂ©dente si elle partage une base commune avec la sĂ©rie en cours de formatage (par exemple git format-patch --cover-letter --range-diff=feature/v1 -3 feature/v2), ou une plage de rĂ©visions si les deux versions de la sĂ©rie sont disjointes (par exemple git format-patch --cover-letter --range-diff=feature/v1~3..feature/v1 -3 feature/v2).

Notez que les options diff passĂ©es Ă  la commande affectent la façon dont le produit principal de format-patch est gĂ©nĂ©rĂ©, mais qu’elles ne sont pas passĂ©es Ă  la machinerie sous-jacente de range-diff utilisĂ©e pour gĂ©nĂ©rer le matĂ©riel de la lettre d’introduction (ceci pourrait changer dans le futur).

--creation-factor=<pourcentage>

UtilisĂ© avec --range-diff, modifie l’heuristique qui fait correspondre les commits entre la sĂ©rie prĂ©cĂ©dente et la sĂ©rie actuelle de rustines en ajustant le facteur de correction du coĂ»t de crĂ©ation/suppression. Voir git-range-diff[1]) pour plus de dĂ©tails.

Par dĂ©faut Ă  999 (le git-range-diff[1] utilise 60), car le cas d’utilisation est de montrer une comparaison avec une itĂ©ration plus ancienne du mĂȘme sujet et l’outil devrait trouver plus de correspondance entre les deux ensembles de rustines.

--notes[=<ref>]
--no-notes

Ajouter les notes (voir git-notes[1]) pour le commit aprĂšs la ligne Ă  trois tirets.

Le cas d’utilisation attendu de ceci est d’Ă©crire une explication de soutien pour le commit qui n’appartient pas au message de journal de commit proprement dit, et de l’inclure avec la soumission de la rustine. Alors que l’on peut simplement Ă©crire ces explications aprĂšs l’exĂ©cution de format-patch mais avant l’envoi, les conserver sous forme de notes Git permet de les maintenir entre les versions de la sĂ©rie de patchs (mais voir la discussion sur les options de configuration notes.rewrite dans git-notes[1] pour utiliser ce flux de travail).

La valeur par défaut est --no-notes, sauf si la configuration format.notes est définie.

--[no-]signature=<signature>

Ajouter une signature Ă  chaque message produit. Selon la RFC 3676, la signature est sĂ©parĂ©e du corps du message par une ligne avec --. Si l’option signature est omise, la signature est par dĂ©faut le numĂ©ro de version de Git.

--signature-file=<fichier>

Fonctionne comme --signature, sauf que la signature est lue depuis un fichier.

--suffix=.<sfx>

Au lieu d’utiliser .patch comme suffixe pour les noms de fichiers gĂ©nĂ©rĂ©s, utiliser le suffixe spĂ©cifiĂ©. Une alternative courante est --suffix=.txt. Si cette option est laissĂ©e vide, le suffixe .patch sera supprimĂ©.

Notez que le caractĂšre de tĂȘte ne doit pas nĂ©cessairement ĂȘtre un point ; par exemple, vous pouvez utiliser --suffix=-patch pour obtenir 0001-description-de-ma-modification-patch.

-q
--quiet

Ne pas afficher les noms des fichiers générés sur la sortie standard.

--no-binary

Ne pas afficher le contenu des modifications dans les fichiers binaires, mais plutĂŽt un avis que ces fichiers ont Ă©tĂ© modifiĂ©s. Les rustines gĂ©nĂ©rĂ©es Ă  l’aide de cette option ne peuvent pas ĂȘtre appliquĂ©es correctement, mais elles sont toujours utiles pour une revue du code.

--zero-commit

Affiche une empreinte entiĂšrement nulle dans l’en-tĂȘte From de chaque rustine au lieu de l’empreinte du commit.

--[no-]base[=<commit>]

Enregistrer les informations sur l’arbre de base pour identifier l’Ă©tat auquel la sĂ©rie de rustines s’applique. Voir la section INFORMATION SUR L’ARBRE DE BASE ci-dessous pour plus de dĂ©tails. Si <commit> est "auto", un commit de base est automatiquement choisi. L’option --no-base remplace la valeur configurĂ©e dans format.useAutoBase.

--root

Traiter l’argument rĂ©vision comme une <plage de rĂ©visions>, mĂȘme s’il ne s’agit que d’un seul commit (qui serait normalement traitĂ© comme un <depuis>). Notez que les commits racines inclus dans l’intervalle spĂ©cifiĂ© sont toujours formatĂ©s comme des rustines de crĂ©ation, indĂ©pendamment de ce drapeau.

--progress

Afficher des rapports de progression sur stderr au fur et à mesure que les rustines sont générées.

CONFIGURATION

Vous pouvez spĂ©cifier des lignes d’en-tĂȘte supplĂ©mentaires Ă  ajouter Ă  chaque message, des valeurs par dĂ©faut pour le prĂ©fixe de l’objet et le suffixe du fichier, numĂ©roter les rustines lorsque vous en produisez plusieurs, ajouter des en-tĂȘtes "To :" ou "Cc :", configurer les piĂšces jointes, changer le rĂ©pertoire de sortie des rustines et signer les rustines avec des variables de configuration.

[format]
	headers = "Organization: git-foo\n"
	subjectPrefix = CHANGE
	suffix = .txt
	numbered = auto
	to = <courriel>
	cc = <courriel>
	attach [ = mime-boundary-string ]
	signOff = true
	outputDirectory = <répertoire>
	coverLetter = auto
	coverFromDescription = auto

DISCUSSION

La rustine produite par git format-patch est au format d’une boĂźte aux lettres UNIX, avec un horodatage "magique" fixe pour indiquer que le fichier est produit par format-patch plutĂŽt que par une vraie boĂźte aux lettres, comme ceci :

From 8f72bad1baf19a53459661343e21d6491c3908d3 Mon Sep 17 00:00:00 2001
From: Tony Luck <tony.luck@intel.com>
Date: Tue, 13 Jul 2010 11:42:54 -0700
Subject: [PATCH] =?UTF-8?q?[IA64]=20Put=20ia64=20config=20files=20on=20the=20?=
 =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig=20diet?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Les fichiers de configuration arch/arm ont été allégés à l'aide d'un script python.
(Voir le commentaire du commit c2330e286f68f1c408b4aa6515ba49d57f05beae)

Faire la mĂȘme chose pour ia64 afin que nous puissions avoir un look Ă©lĂ©gant et soignĂ©.
...

Typiquement, elles sera placĂ©e dans le dossier des brouillons d’un MUA, Ă©ditĂ©e pour ajouter des commentaires opportuns qui ne devraient pas aller dans le changelog aprĂšs les trois tirets, et ensuite envoyĂ©e comme un message dont le corps, dans notre exemple, commence par "arch/arm les fichiers de configuration…​". À la rĂ©ception, les lecteurs peuvent enregistrer les rustines intĂ©ressantes dans une boĂźte aux lettres UNIX et les appliquer avec git-am[1].

Lorsqu’une rustine fait partie d’une discussion en cours, la rustine gĂ©nĂ©rĂ©e par "git format-patch" peut ĂȘtre modifiĂ©e pour tirer parti de la fonctionnalitĂ© "git am --scissors". AprĂšs votre rĂ©ponse Ă  la discussion vient une ligne qui consiste uniquement en "-- >8 --" (ciseaux et perforation), suivie par la rustine avec les champs d’en-tĂȘte inutiles supprimĂ©s :

...
> Il faut donc faire telle ou telle chose.

C'est logique pour moi.  Et cette rustine ?

-- >8 --
Sujet : [IA64] Mettre les fichiers de configuration ia64 sur le rĂ©gime Uwe Kleine-König

Les fichiers de configuration arch/arm ont été allégés à l'aide d'un script python
...

Lorsque vous envoyez une rustine de cette maniĂšre, le plus souvent vous envoyez votre propre rustine, donc en plus du marqueur "From $SHA1 $magic_timestamp" vous devez omettre les lignes From: et Date: du fichier de rustine. Le titre de la rustine est susceptible d’ĂȘtre diffĂ©rent du sujet de la discussion Ă  laquelle la rustine rĂ©pond, il est donc probable que vous souhaitiez conserver la ligne Subject :, comme dans l’exemple ci-dessus.

VĂ©rification de la corruption des rustines

S’ils ne sont pas configurĂ©s correctement, de nombreux outils de courriel corrompent les espaces blancs. Voici deux types courants de corruption :

  • Lignes de contexte vides qui ne comportent pas d’espace.

  • Lignes de contexte non vides qui ont un espace blanc supplĂ©mentaire au dĂ©but.

Une façon de tester si votre MUA est correctement configuré est :

  • Envoyez le patch Ă  vous-mĂȘme, exactement comme vous le feriez, Ă  l’exception des lignes To : et Cc : qui ne contiennent pas l’adresse de la liste et du mainteneur.

  • Enregistrez cette rustine dans un fichier au format boĂźte aux lettres UNIX. Appelez-la a.patch, par exemple.

  • Appliquez-le :

    $ git fetch <projet> master:test-apply
    $ git switch test-apply
    $ git restore --source=HEAD --staged --worktree :/
    $ git am a.patch

Si elle ne s’applique pas correctement, il peut y avoir plusieurs raisons.

  • La rustine elle-mĂȘme ne s’applique pas proprement. C’est mauvais signe mais cela n’a pas grand chose Ă  voir avec votre MUA. Vous pourriez vouloir rebaser la rustine avec git-rebase[1] avant de la rĂ©gĂ©nĂ©rer dans ce cas.

  • Le MUA a corrompu votre rustine ; "am" se plaint que la rustine ne s’applique pas. Regardez dans le sous-rĂ©pertoire .git/rebase-apply/ et voyez ce que contient le fichier patch et vĂ©rifiez les modĂšles de corruption courants mentionnĂ©s ci-dessus.

  • Pendant que vous y ĂȘtes, vĂ©rifiez Ă©galement les fichiers info et final-commit. Si ce qui se trouve dans final-commit n’est pas exactement ce que vous voulez voir dans le message du journal de validation, il est trĂšs probable que le destinataire finisse par modifier manuellement le message du journal en appliquant votre rustine. Des Ă©lĂ©ments tels que "Hi, this is my first patch.\n" dans le courriel de rustine doivent figurer aprĂšs la ligne Ă  trois tirets qui signale la fin du message de validation.

CONSEILS SPÉCIFIQUES À CHAQUE OUTIL DE COURRIEL

Voici quelques conseils pour réussir à soumettre des rustines en ligne en utilisant différents outils de courriel.

GMail

GMail ne dispose d’aucun moyen de dĂ©sactiver le retour Ă  la ligne dans l’interface Web, ce qui fait que les courriels que vous envoyez seront tronquĂ©s. Vous pouvez cependant utiliser "git send-email" et envoyer vos correctifs par le biais du serveur SMTP de GMail, ou utiliser n’importe quel client de messagerie IMAP pour vous connecter au serveur IMAP de Google et transfĂ©rer les courriels par ce biais.

Pour des conseils sur l’utilisation de "git send-email" pour envoyer vos rustines via le serveur SMTP GMail, consultez la section EXEMPLE de git-send-email[1].

Pour des conseils sur la soumission en utilisant l’interface IMAP, voir la section EXEMPLE de git-imap-send[1].

Thunderbird

Par défaut, Thunderbird enveloppe les courriels et les signale comme étant format=flowed, ce qui rend le courriel résultant inutilisable par Git.

Il existe trois approches diffĂ©rentes : utiliser un module complĂ©mentaire pour dĂ©sactiver les retours Ă  la ligne, configurer Thunderbird pour qu’il n’altĂšre pas les rustine, ou utiliser un Ă©diteur externe pour empĂȘcher Thunderbird d’altĂ©rer les rustines.

Approche n°1 (add-on)

Installez le module complémentaire Toggle Word Wrap disponible sur https://addons.mozilla.org/thunderbird/addon/toggle-word-wrap/. Il ajoute une entrée de menu "Enable Word Wrap" dans le menu "Options" du compositeur que vous pouvez cocher. Vous pouvez maintenant composer le message comme vous le feriez normalement (couper + coller, git format-patch | git imap-send, etc.), mais vous devez insérer manuellement des sauts de ligne dans tout texte que vous tapez.

Approche n°2 (configuration)

Trois étapes :

  1. Configurez la composition de votre serveur de messagerie en texte brut : Editer…​ParamĂštres du compte…​Composition et adressage, dĂ©cocher "Composer les messages en HTML".

  2. Configurez votre fenĂȘtre de composition gĂ©nĂ©rale pour qu’elle n’introduise pas automatiquement des retours chariot.

    Dans Thunderbird 2 : Edition..Préférences..Composition, envelopper les messages en texte brut à 0

    Dans Thunderbird 3 : Editer…​PrĂ©fĂ©rences…​AvancĂ©…​Editeur de configuration. Recherchez l’entrĂ©e "mail.wrap_long_lines". Basculez-la pour vous assurer qu’elle est rĂ©glĂ©e sur false. Recherchez Ă©galement "mailnews.wraplength" et mettez la valeur Ă  0.

  3. DĂ©sactiver l’utilisation de format=flowed : Édition..PrĂ©fĂ©rences..AvancĂ©..Éditeur de configuration. Recherchez l’entrĂ©e "mailnews.send_plaintext_flowed". Basculez-la pour vous assurer qu’elle est dĂ©finie sur false.

Une fois que c’est fait, vous devriez ĂȘtre en mesure de composer un courriel comme vous le feriez normalement (couper + coller, git format-patch | git imap-send, etc), et les rustines ne seront pas altĂ©rĂ©es.

Approche n°3 (éditeur externe)

Les extensions Thunderbird suivantes sont nĂ©cessaires : AboutConfig de https://mjg.github.io/AboutConfig/ et External Editor de https://globs.org/articles.php?lng=en&pg=8

  1. PrĂ©parer la rustine sous forme de fichier texte Ă  l’aide de la mĂ©thode de votre choix.

  2. Avant d’ouvrir une fenĂȘtre de composition, utilisez Edit→Account Settings pour dĂ©cocher le paramĂštre "Compose messages in HTML format" dans le panneau "Composition & Addressing" du compte qui sera utilisĂ© pour envoyer la rustine.

  3. Dans la fenĂȘtre principale de Thunderbird, avant d’ouvrir la fenĂȘtre de composition de la rustine, utilisez Tools→about:config pour dĂ©finir les Ă©lĂ©ments suivants aux valeurs indiquĂ©es :

    	mailnews.send_plaintext_flowed  => false
    	mailnews.wraplength             => 0
  4. Ouvrez une fenĂȘtre de composition et cliquez sur l’icĂŽne de l’éditeur externe.

  5. Dans la fenĂȘtre de l’Ă©diteur externe, lisez le fichier de rustine et quittez l’Ă©diteur normalement.

Remarque : il est peut-ĂȘtre possible de rĂ©aliser l’Ă©tape 2 avec about:config et les paramĂštres suivants, mais personne n’a encore essayĂ©.

	mail.html_compose                       => false
	mail.identity.default.compose_html      => false
	mail.identity.id?.compose_html          => false

Il existe un script dans contrib/thunderbird-patch-inline qui peut vous aider Ă  inclure des rustines dans Thunderbird de maniĂšre simple. Pour l’utiliser, suivez les Ă©tapes ci-dessus et utilisez le script comme Ă©diteur externe.

KMail

Cela devrait vous aider Ă  soumettre des rustine en ligne en utilisant KMail.

  1. Préparez la rustine sous forme de fichier texte.

  2. Cliquez sur Nouveau courrier.

  3. Allez sous "Options" dans la fenĂȘtre Composer et assurez-vous que l’option "Word wrap" n’est pas activĂ©e.

  4. Utilisez Message → InsĂ©rer un fichier…​ et insĂ©rez la rustine.

  5. De retour dans la fenĂȘtre de composition : ajoutez tout autre texte que vous souhaitez au message, complĂ©tez les champs "adresse" et "objet", puis appuyez sur "envoyer".

INFORMATION D’ARBRE DE BASE

Le bloc d’informations de l’arbre de base est utilisĂ© par les mainteneurs ou les testeurs tiers pour connaĂźtre l’Ă©tat exact auquel s’applique la sĂ©rie de rustines. Il se compose du "base commit", qui est un commit bien connu faisant partie de la partie stable de l’historique du projet sur lequel tout le monde travaille, et de zĂ©ro ou plus "rustines prĂ©requises", qui sont des rustines bien connues en cours de dĂ©veloppement qui ne font pas encore partie du "base commit" et qui doivent ĂȘtre appliquĂ©es au-dessus du "base commit" dans un ordre topologique avant que les rustines puissent ĂȘtre appliquĂ©es.

Le "commit de base" est affichĂ© sous la forme "base-commit : " suivi de l’indice 40-hex du nom de l’objet commit. Une rustine prĂ©-requise est affichĂ©e sous la forme "prerequisite-patch-id : " suivi de l’identifiant 40-hex de la rustine, qui peut ĂȘtre obtenu en passant la rustine par la commande git patch-id --stable.

Imaginez qu’en plus du commit public P, vous appliquiez des rustines X, Y et Z bien connues de quelqu’un d’autre, et que vous construisiez ensuite votre sĂ©rie de trois rustines A, B, C, l’historique serait le suivant :

---P---X---Y---Z---A---B---C

Avec git format-patch --base=P -3 C (ou ses variantes, par exemple avec --cover-letter ou en utilisant Z..C au lieu de -3 C pour spĂ©cifier l’intervalle), le bloc d’information de l’arbre de base est affichĂ© Ă  la fin du premier message que la commande produit (soit la premiĂšre rustine, soit la lettre d’introduction), comme ceci :

base-commit: P
prerequisite-patch-id: X
prerequisite-patch-id: Y
prerequisite-patch-id: Z

Pour une topologie non linéaire, telle que

---P---X---A---M---C
    \         /
     Y---Z---B

Vous pouvez également utiliser git format-patch --base=P -3 C pour générer des rustines pour A, B et C, et les identifiants de P, X, Y, Z sont ajoutés à la fin du premier message.

Si vous mettez --base=auto dans la ligne de commande, le commit de base sera calculĂ© automatiquement comme Ă©tant la base de fusion du commit sommet de la branche de suivi Ă  distance et de l’intervalle de rĂ©vision spĂ©cifiĂ© dans la ligne de commande. Pour une branche locale, vous devez la faire suivre une branche distante par git branch --set-upstream-to avant d’utiliser cette option.

EXEMPLES

  • Extraire les commits entre les rĂ©visions R1 et R2, et les appliquer sur la branche courante en utilisant git am pour les sĂ©lectionner :

    $ git format-patch -k --stdout R1..R2 | git am -3 -k
  • Extrait tous les commits qui sont dans la branche actuelle mais pas dans la branche d’origine :

    $ git format-patch origin

    Pour chaque commit, un fichier séparé est créé dans le répertoire actuel.

  • Extrait tous les commits qui mĂšnent Ă  origin depuis le dĂ©but du projet :

    $ git format-patch --root origin
  • Pareil que prĂ©cĂ©demment :

    $ git format-patch -M -B origin

    En outre, la commande dĂ©tecte et traite intelligemment les renommages et les rĂ©Ă©critures complĂštes pour produire une rustine de renommage. Une rustine de renommage rĂ©duit la quantitĂ© de texte produit, et facilite la revue. Notez que les programmes "patch" non-Git ne comprendront pas les rustines de renommage, aussi ne l’utilisez que si vous savez que le destinataire utilise Git pour appliquer votre rustine.

  • Extraire les trois commits les plus Ă©levĂ©s de la branche actuelle et les formater comme des rustines pouvant ĂȘtre envoyĂ©es par courriel :

    $ git format-patch -3

MISES EN GARDE

Notez que format-patch omettra les commits de fusion dans la sortie, mĂȘme s’ils font partie de la plage demandĂ©e. Un simple "patch" n’inclut pas assez d’informations pour que le destinataire puisse reproduire le mĂȘme commit de fusion.

GIT

Fait partie de la suite git[1]

TRADUCTION

Cette page de manuel a été traduite par Jean-Noël Avila <jn.avila AT free DOT fr> et les membres du projet git-manpages-l10n. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le site https://github.com/jnavila/git-manpages-l10n .

scroll-to-top