Comment créer et appliquer correctement .fichier de correctif pour un seul .rpc fichier à l'aide de diff?
J'essaye d'appliquer un .patch fichier à un seul .rpc fichier à l'aide de git diff.
Ce sont mes fichiers: old.cpp , new.cpp et correctif.patch.
old.cpp est original non modifié code source, new.cpp est la source modifié et correctif.patch est le patch je veux créer qui lorsqu'il est appliqué à old.cpp doit appliquer les modifications de new.cpp. Les deux old.cpp et new.cpp sont avec Windows (CR LF) les fins de ligne, les deux fichiers sont 918 KO grande, une seule ligne est en cours de modification dans la source.
J'ai créer le patch par mettre les deux fichiers old.cpp et new.cpp dans le même dossier et à l'aide de Git Bash invite de commandes avec la commande:
git diff -u old.cpp new.cpp > fix.patch
La correctif.patch fichier avec succès s'affiche mais quand je fait le test et l'appliquer à old.cpp avec Git Bash en tapant:
patch old.cpp fix.patch
le patch est appliqué avec succès, mais la taille de old.cpp réduit de 918 KO à 894 KO. Après quelques recherches avec kdiff3 j'ai trouvé que mes nouvellement créé correctif.patch fichier est avec Unix (LF) les fins de ligne et après l'appliquer à old.cpp, le patché old.cpp est l'adoption de Unix (LF) les fins de ligne trop. Je suppose que c'est la raison pour laquelle la taille du fichier de old.cpp réduit trop.
Ma question est ce que commande dois-je utiliser dans git ou quoi d'autre que je dois faire pour mes nouvellement créé correctif.patch fichier reste avec Windows (CR LF) les fins de ligne et après l'application du patch à old.cpp nouvellement corrigé old.cpp fichier est avec Windows (CR LF) les fins de ligne trop et la taille de fichier ne permet pas de réduire de manière drastique. J'ai reçu une suggestion ici pour utiliser git apply
au lieu de patch
mais je ne sais pas ce qu'est exactement le type après git apply
de sorte qu'il fonctionne la façon dont je le veux pour ma situation. 🙁
Je suis en utilisant Windows XP SP2, Git 1.7.6, Git Extensions 2.24 et Microsoft Visual C++ 2010.
La source n'est pas écrit par moi. Aussi comment est-ce par rapport à ma question?
J'ai essayé de modifier manuellement les fins de ligne fixe.patch formulaire d'Unix vers Windows avant de l'appliquer, mais même après l'application le fichier patché est dans le style Unix fins de ligne. S'il vous plaît aider.
Il n'est pas. C'est pourquoi je l'ai posté dans un commentaire, et préfixé par "côté de la question"!
Je viens de vérifier
git config core.autocrlf
, il revint vers moi true
. Je suis à l'aide de patch
dans le "Git Bash" invite de commandes.OriginalL'auteur Placeholder | 2011-08-21
Vous devez vous connecter pour publier un commentaire.
OK, j'ai finalement résolu le problème et appris ma leçon aswell. 🙂
Le patch sont créés avec Git Bash l'invite de commande:
Alors assurez-vous que le old.cpp et correctif.patch sont dans le même dossier l'en-tête de correctif.patch lit:
Après ce type dans Git Bash invite:
Et le tour est joué! Pas de ligne messups, des erreurs ou des problèmes. J'espère que cela aide quelqu'un qui trébuche ouvrir la même chose un jour, Merci à tous pour le rapide et profonde des réponses, elles m'ont permis d'apprendre quelque chose de nouveau aujourd'hui. 🙂
OriginalL'auteur Placeholder
Essayez d'appliquer le patch à l'aide de git apply' au lieu de 'patch'. git apply (appliquer) pour appeler patch, mais doit obéir à tous les autres git directives qui peut trier votre crlf question ici. Il accepte aussi le patch options (comme git apply-p1 " à l'élagage des éléments de chemin d'accès). J'ai assez souvent également utiliser git "appliquer" pour appliquer des correctifs à partir de git pour CVS arbres. git "appliquer" n'exige pas que l'objectif soit un dépôt git.
git apply
. Pourriez-vous m'indiquer comment exactement si j'applique le patch de la façon dont je veux à l'aide degit apply
. Je vous remercie à l'avance. 🙂Tout comme vous pouvez utiliser 'patch'. Le fichier de correctif contient des informations sur le fichier à modifier dans le patch en-tête de sorte 'git apply-p0 changements.patch' applique le patch dans le répertoire en cours.
Oh, maintenant je suis d'erreur -
fix.patch:8 trailing whitespace
eterror: patch failed: old.cpp:1419
eterror: old.cpp: patch does not apply
Nevermind, je l'ai corrigé. Je vous remercie. 🙂
Nous donner un indice: "Nevermind, je l'ai corrigé." - Il serait utile de le faire savoir afin que je/d'autres personnes à éviter les mêmes problèmes..
OriginalL'auteur patthoyts
Utilisation
--include
drapeau.OriginalL'auteur Noobie