Si vous faites référence tout simplement git diff
, la taille du contexte de gros morceau est configurable: il est défini par l'option -U
, si elle est spécifiée, sinon de réglage diff.context
, si elle est définie. Si tous échouent, la valeur par défaut est trois lignes de contexte (au-dessus et au-dessous).
Par conséquent:
$ git config --global diff.context 1
réduit le contexte de diff à une ligne dans chaque direction, au lieu de 3. Il est également une valeur d'option --inter-hunk-context
que vous pouvez utiliser pour fusionner plus beaux mecs ensemble (ce qui est le contraire de ce que vous voulez donc je le mentionne seulement pour l'exhaustivité, voir diff.interHunkContext
, disponible dans Git 2.12 et plus tard, et voir aussi --function-context
aka -W
).
Cependant, git add --interactive
fonctionne git diff-files
ou git diff-index
plutôt que simple git diff
, et comme the git config
documentation cleverly hides:
diff.autoRefreshIndex
Lorsque vous utilisez git diff de comparer avec les fichiers d'arbres de travail, Ne tenez pas compte du changement de statistiques uniquement tel que modifié. Au lieu de cela, exécutez silencieusement git update-index --refresh
pour mettre à jour les informations statistiques mises en cache pour les chemins dont le contenu dans l'arborescence de travail correspond au contenu de l'index. Cette option est définie par défaut sur true. Notez que cela ne concerne que git diff Porcelaine, et non des niveaux inférieurs diff commandes telles que les fichiers diff git.
(accent mis en gras).
Bien que cela parle de la mise en diff.autoRefreshIndex
, il applique à tous des éléments configurables: git diff
lit et obéit à votre configuration, mais git diff-index
et git diff-files
et ainsi de suite ne pas (intentionnellement, de sorte que les scripts qui doivent utiliser la plomberie commandes plutôt que de la porcelaine, peut obtenir le bon comportement indépendamment des options nouvellement ajoutées). En fin de compte, cela signifie que si vous faites spécifiquement référence à git add --interactive
, la réponse est non, ou plutôt, pas sans un peu de travail. Le script interactif ajouter Perl utilise les commandes de plomberie, pas la porcelaine git diff
, il doit donc obtenir et utiliser un tel paramètre lui-même.Il ne obtient et utilise vos paramètres diff.algorithm
et diff.compactionHeuristic
, mais il pas utilisez votre diff.context
paramètre.
Rendre le faire est facile, mais nécessite de modifier légèrement Git:
diff --git a/usr/local/libexec/git-core/git-add--interactive b/tmp/git-add--interactive
index 235fb88..ba001a1 100755
--- a/usr/local/libexec/git-core/git-add--interactive
+++ b/tmp/git-add--interactive
@@ -47,2 +47,3 @@ my $normal_color = $repo->get_color("", "reset");
+my $diff_context_size = $repo->config('diff.context');
my $diff_algorithm = $repo->config('diff.algorithm');
@@ -753,2 +754,6 @@ sub parse_diff {
}
+ if (defined $diff_context_size) {
+ my $Uarg = sprintf("-U%d", $diff_context_size);
+ splice @diff_cmd, 1, 0, "$Uarg";
+ }
if ($diff_compaction_heuristic) {
(il peut y avoir une meilleure façon de mettre en place l'argument -U
, mon Perl est maladroit). Le mode de correctif interactif (ou git add -p
) nécessite que cet extrait soit ajouté s'il doit obéir à votre paramètre diff.context
.
Bien sûr, vous pouvez simplement split
(s
) un gros morceau au cours add interactif, comme pedrorijo91 reminded us in a comment un lien vers Can I modify git-add's hunk size?, donc il n'y a pas de réel besoin pour cela. Cela pourrait être bien si c'était inclus, cependant.
jeter un oeil à http://stackoverflow.com/questions/1122210/can-i-modify-git-adds-hunk-size – pedrorijo91
Merci pedrorijo91, pas ce que je cherche. – repara2