2017-08-03 7 views
0

je dois appliquer un correctif à mon repo et je couraisgit appliquer ne fait aucun changement aux fichiers

git apply --directory=$PWD xxxxx.patch 

Pour des raisons que je ne rentrerais pas, je ne peux pas utiliser git am dans ce cas, et je dois utiliser le drapeau d'annuaire.

git me dit:

$> git apply --directory=$PWD xxxxx.patch 
code1/xxxxx.patch:337: trailing whitespace. 
     < one partial line of code > 
warning: 1 line adds whitespace errors. 

J'ai lu que l'avertissement est des espaces rien de grave et ne doit pas arrêter git d'appliquer le patch. Cependant, quelle que soit la raison, git n'applique pas le patch. Aucun des fichiers en cours dans le repo ne change. Une idée de ce qu'il faut faire à ce sujet?

+0

Après que 'git apply' produise cet avertissement,' git status' ne montre aucune modification prête à être ajoutée? Cela semble étrange. – torek

+0

@torek 'git status' affiche une ligne listant ce patch mais à la fin il dit" rien ajouté à la validation ". Juste pour les grins, j'ai lié 'git commit' après l'application et j'ai obtenu' nothing added to commit' de nouveau. Et l'inspection des fichiers montre qu'aucun changement n'a été fait. –

+0

La seule chose que je peux penser ici est que, pour une raison quelconque, 'git apply' pense qu'aucun des noms de fichiers ne va avec vos fichiers. Notez la phrase au début de la documentation: "Lors de l'exécution à partir d'un sous-répertoire dans un référentiel, les chemins patchés en dehors du répertoire sont ignorés." Peut-être que vous voulez omettre '--directory = $ PWD' si vous avez déjà cd-ed dans le sous-répertoire, ou peut-être vous avez juste besoin de l'exécuter depuis le niveau supérieur (et n'utilisez pas' $ PWD' ici) . – torek

Répondre

1

Je note la phrase en gras (mon caractère gras) suivant the git apply documentation:

Reads la sortie diff fournie (à savoir "un patch") et l'applique aux fichiers. Lors de l'exécution à partir d'un sous-répertoire dans un référentiel, les chemins patchés en dehors du répertoire sont ignorés. Avec l'option --index ...

Il semble que dans ce cas git patch est de décider que les fichiers sont en dehors du répertoire. S'il est exécuté depuis le niveau supérieur, il devrait arrêter de décider (bien que, bien sûr, $PWD changera lui aussi, toute option --directory, si elle est requise, aurait besoin d'un argument différent).