Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.46.1 → 2.47.0 no changes
- 2.46.0 07/29/24
- 2.45.1 → 2.45.2 no changes
- 2.45.0 04/29/24
- 2.44.1 → 2.44.2 no changes
- 2.44.0 02/23/24
- 2.43.2 → 2.43.5 no changes
- 2.43.1 02/09/24
- 2.43.0 11/20/23
- 2.42.2 → 2.42.3 no changes
- 2.42.1 11/02/23
- 2.42.0 08/21/23
- 2.41.1 → 2.41.2 no changes
- 2.41.0 06/01/23
- 2.40.1 → 2.40.3 no changes
- 2.40.0 03/12/23
- 2.38.1 → 2.39.5 no changes
- 2.38.0 10/02/22
- 2.36.1 → 2.37.7 no changes
- 2.36.0 04/18/22
- 2.35.1 → 2.35.8 no changes
- 2.35.0 01/24/22
- 2.34.1 → 2.34.8 no changes
- 2.34.0 11/15/21
- 2.33.1 → 2.33.8 no changes
- 2.33.0 08/16/21
- 2.32.1 → 2.32.7 no changes
- 2.32.0 06/06/21
- 2.31.1 → 2.31.8 no changes
- 2.31.0 03/15/21
- 2.30.1 → 2.30.9 no changes
- 2.30.0 12/27/20
- 2.29.1 → 2.29.3 no changes
- 2.29.0 10/19/20
- 2.28.1 no changes
- 2.28.0 07/27/20
- 2.27.1 no changes
- 2.27.0 06/01/20
- 2.25.2 → 2.26.3 no changes
- 2.25.1 02/17/20
- 2.25.0 01/13/20
- 2.24.1 → 2.24.4 no changes
- 2.24.0 11/04/19
- 2.23.1 → 2.23.4 no changes
- 2.23.0 08/16/19
- 2.22.1 → 2.22.5 no changes
- 2.22.0 06/07/19
- 2.21.1 → 2.21.4 no changes
- 2.21.0 02/24/19
- 2.20.1 → 2.20.5 no changes
- 2.20.0 12/09/18
- 2.19.1 → 2.19.6 no changes
- 2.19.0 09/10/18
- 2.18.1 → 2.18.5 no changes
- 2.18.0 06/21/18
- 2.17.1 → 2.17.6 no changes
- 2.17.0 04/02/18
- 2.16.6 12/06/19
- 2.15.4 12/06/19
- 2.14.6 12/06/19
- 2.13.7 05/22/18
- 2.12.5 09/22/17
- 2.11.4 09/22/17
- 2.10.5 no changes
- 2.9.5 07/30/17
- 2.8.6 07/30/17
- 2.7.6 07/30/17
- 2.6.7 05/05/17
- 2.5.6 05/05/17
- 2.4.12 05/05/17
- 2.2.3 → 2.3.10 no changes
- 2.1.4 12/17/14
- 2.0.5 12/17/14
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 fixeMon 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.
-
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.
-
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églantdiff.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églerdiff.statNameWidth
ordiff.statGraphWidth
n’affecte pasgit 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 de0 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 configurationdiff.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 comportementchanges
, 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Ăštrenoncumulative
. - <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Ă© avecgit-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 est50%
. - -C[<n>]
- --find-copies[=<n>]
-
DĂ©tecter les copies aussi bien que les renommages. Voir aussi
--find-copies-harder
. Sin
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 avecpatch
ougit 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 annulerdiff.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 configurationdiff.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
, etdiff.mnemonicPrefix
(voirgit-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
etReferences
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ĂȘteMessage-ID
Ă rĂ©fĂ©rencer.L’argument optionnel <style> peut ĂȘtre soit
shallow
soitdeep
. 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 configurationformat.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 pourgit 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>
estmessage
oudefault
, 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>
estsubject
, 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>
estauto
, si le premier paragraphe de la description de la branche est supérieur à 100 octets, alors le mode seramessage
, sinonsubject
sera utilisé.Si
<mode>
estnone
, 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 fichierv4-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ĂȘtesTo:
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ĂȘtesCc:
ajoutĂ©s jusqu’Ă prĂ©sent (depuis la configuration ou la ligne de commande). - --from
- --from=<ident>
-
Utiliser
ident
dans l’en-tĂȘteFrom:
de chaque courriel de commit. Si l’identifiant de l’auteur du commit n’est pas textuellement identique auident
fourni, placer un en-tĂȘteFrom:
dans le corps du message avec l’auteur original. Si aucunident
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 quegit 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 configurationformat.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 exemplegit 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 exemplegit 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 exemplegit 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 derange-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 configurationnotes.rewrite
dans git-notes[1] pour utiliser ce flux de travail).La valeur par défaut est
--no-notes
, sauf si la configurationformat.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 obtenir0001-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 dansformat.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 :
-
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".
-
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. -
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
-
PrĂ©parer la rustine sous forme de fichier texte Ă lâaide de la mĂ©thode de votre choix.
-
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.
-
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
-
Ouvrez une fenĂȘtre de composition et cliquez sur lâicĂŽne de lâĂ©diteur externe.
-
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.
-
Préparez la rustine sous forme de fichier texte.
-
Cliquez sur Nouveau courrier.
-
Allez sous "Options" dans la fenĂȘtre Composer et assurez-vous que l’option "Word wrap" n’est pas activĂ©e.
-
Utilisez Message → InsĂ©rer un fichier… et insĂ©rez la rustine.
-
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 .