Comment créer un patch adapté à la révision en creuset?
git diff branch master --no-prefix > patch
Cela ne génère que 3 lignes de contexte. Alors je fais ce qui suit
git diff --unified=2000 branch master --no-prefix > patch
Espérons que tous les fichiers auront moins de 2000 lignes. Y a-t-il un moyen de dire à git d'inclure toutes les lignes du fichier pour le correctif sans avoir à spécifier le nombre maximum de lignes?
Je sais que c'est vieux, mais comme je n'aime pas les solutions codées en dur, j'ai donc testé ceci:
git diff -U$(wc -l MYFILE)
L'utilisation de -U semble être le seul moyen d'aborder le problème, mais l'utilisation d'un nombre de lignes promet que cela fonctionnera même pour un petit changement dans un très gros fichier.
This semble fonctionner assez bien:
git diff --no-prefix -U1000
Avec l'avertissement:
Le
-U
flag spécifie les lignes de contexte. Vous devrez peut-être augmenter ce nombre s'il y a plus de 1000 lignes entre vos modifications.
Remarque: annonce git1.8.1rc1 (8 décembre 2012) comprend:
Une nouvelle variable de configuration "
diff.context
"peut être utilisé pour donner le nombre de lignes de contexte par défaut dans la sortie du patch, afin de remplacer le code par défaut en dur de 3 lignes.
donc cela pourrait aider, ici, générer un contexte plus complet.
Cela a fonctionné pour moi sur Mac OS:
git diff -U$(wc -l main.htm | xargs)
Vous avez de l'inspiration et j'ai donc ajouté un alias de git.
$ cat ~/.gitconfig | fgrep diff
df = "!git diff -U$(wc -l \"$1\" | cut -d ' ' -f 1) \"$1\""
$ git df <file>
Mise à jour:
Je viens de trouver "git df" ne fonctionne pas parfois, à cause d'un changement de répertoire lors de l'exécution de git alias. (Voir les alias git fonctionnent dans le mauvais répertoire ). Voici donc la version mise à jour:
$ cat ~/.gitconfig | fgrep df
df = "! [ \"$GIT_PREFIX\" != \"\" ] && cd \"$GIT_PREFIX\"; ~/bin/git_df.sh"
$
$ cat ~/bin/git_df.sh
#!/bin/bash
for FILE in $@; do
git diff -U$(wc -l "${FILE}" | cut -d ' ' -f 1) "${FILE}"
done
exit 0