web-dev-qa-db-fra.com

Git applique des patches

J'essaie d'appliquer un correctif qui inclut des fichiers binaires avec git apply mais seuls les fichiers sont ajoutés. J'ai essayé d'exécuter git apply failing.patch -v et il affiche quelque chose comme:

Patch ignoré 'fichier.txt'.
Vérification du fichier patch.bin ...
Correctif appliqué fichier.bin.

Comment puis-je savoir quelle est la raison du saut? Comme le message actuel n’est pas très éclairant.

12
Iulian Onofrei

J'ai découvert le problème en exécutant patch -p1 < failing.patch qui imprimait:

ne peut pas trouver le fichier à corriger à la ligne 5

et m'a rappelé que je n'étais pas dans le répertoire racine.

Je ne comprends pas pourquoi personne ne l’avait demandé auparavant et pourquoi le message commenté n’est-il pas détaillé.

En outre, même pas la documentation officielle ne mentionne le saut et les causes possibles.

17
Iulian Onofrei

Souffrant de ce problème tout en essayant de porter les modifications d'un projet à l'autre. git apply semble ignorer tous les noms de répertoires figurant sur les chemins d'accès aux fichiers du correctif, et refuse également de s'appliquer si la ligne Index ne correspond pas à un hachage de fichier dans le référentiel cible. J'ai eu plus de succès en utilisant ces options (dont --no-index semble être non documenté):

git apply --verbose --no-index --directory {subdir} {patch-file} 
2
Ed Randall

Vous avez le même problème. Dans mon cas, la source d'erreur était le dossier .git dans certains des répertoires parents de la cible du correctif. La solution consistait à déplacer la cible du correctif en dehors de ce répertoire parent.

0
Alexander