Patch linux standard codé en dur uniquement pour les fichiers texte Unix. PS: Je ne veux pas convertir TOUS en UNIX, puis convertir le résultat en retour.Comment utiliser les correctifs créés dans Windows (avec CRLF) sous Linux? I
Répondre
perl -i.bak -pe's/\R/\n/g' inputfile
pour convertir n'importe quelle ligne se terminant à la norme.
Merci, c'est intéressant mais pas applicable dans ma situation. –
Il répond à la question dans le titre si le diff est basé sur des lignes, comme ils le sont habituellement. – Anonymous
J'ai déjà rencontré ce problème plusieurs fois. C'est ce que j'ai découvert:
- La commande de patch Linux ne reconnaîtra pas un fichier patch ayant un CRLF dans les méta-lignes du patch.
- Les fins de ligne du contenu réel du correctif doivent correspondre aux fins de ligne des fichiers en cours de correction.
donc ce que je l'ai fait:
- Utilisez dos2unix pour convertir les fichiers de patch à LF fins de ligne seulement.
- Utilisez dos2unix pour convertir les fichiers en cours de correction en fins de ligne LF uniquement.
- Appliquer le correctif.
Vous pouvez utiliser unix2dos pour convertir les fichiers corrigés en fins de ligne CRLF si vous souhaitez conserver cette convention.
Combiné:
dos2unix patchfile.diff
dos2unix $(grep 'Index:' patchfile.diff | awk '{print $2}')
patch --verbose -p0 -i patchfile.diff
unix2dos $(grep 'Index:' patchfile.diff | awk '{print $2}')
La dernière ligne dépend si vous voulez garder les CRLFs ou non.
M.
PS. Cela aurait dû être une réponse à la publication de cscrimge. DS.
Ce qui a fonctionné pour moi était ce qui précède, mais je préfère «+++» plutôt que «Index:». – nullPainter
Utilisez l'option --binary. Voici l'extrait pertinent de la page man:
--binary
Write all files in binary mode, except for standard output and /dev/tty. When reading, disable
the heuristic for transforming CRLF line endings into LF line endings. This option is needed
on POSIX systems when applying patches generated on non-POSIX systems to non-POSIX files. (On
POSIX systems, file reads and writes never transform line endings. On Windows, reads and writes
do transform line endings by default, and patches should be generated by diff --binary when
line endings are significant.)
Ceci est une solution un de nos gars est venu avec dans notre bureau, donc je ne suis pas prendre le crédit pour cela, mais ça fonctionne pour moi ici.
Nous avons parfois une situation de terminaisons de lignes mixtes Linux et Windows dans le même fichier, et nous créons également des fichiers de correctifs à partir de Windows et les appliquons sur Linux.
Si vous rencontrez un problème de correctif après avoir créé votre fichier patch sur Windows ou que vous avez mélangé les fins de ligne font alors ceci:
dos2unix patch-file dos2unix $(sed -n 's/^Index: //p' patch-file) patch -p0 -i patch-file
- 1. Comment utiliser gtk avec cmake sous Windows?
- 2. Compiler pour Windows sous Linux
- 3. Hashlib sous Windows et Linux
- 4. Utiliser SQLite avec C sous Windows
- 5. Performances Telnet sous Windows XP et Linux
- 6. Comment compiler pour Windows sous Linux avec gcc/g ++?
- 7. Utiliser GVim sous Windows pour éditer des fichiers Linux distants?
- 8. COFF sous Linux ou ELF sous Windows
- 9. Comment rechercher des fichiers contenant les fins de ligne dos (CRLF) avec grep sur Linux?
- 10. Comment utiliser net-snmp 5.5 avec IPv6 sous Linux?
- 11. Comment fonctionnent les correctifs dans Git?
- 12. comment utiliser SDL dans Linux?
- 13. Programmation sur l'iPhone sous Windows/Linux?
- 14. C++ flash sous linux
- 15. Traduction de CRLF avec Unicode en Perl
- 16. Exécution de programmes Windows sous Linux
- 17. Hibernate - comportement différent sous Linux et Windows
- 18. mxmlc compile différemment sous Linux et Windows?
- 19. Problèmes avec les appels system() sous Linux
- 20. Objectif C sous Windows ou Linux
- 21. Caractère EOL sous Linux et Windows
- 22. Expliquez les différences entre ImageMagick sous Windows et CentOS linux?
- 23. Compilation croisée pour Linux sous Windows
- 24. Comment mettre à jour l'application Windows installée (création de correctifs)
- 25. Comment utiliser Zend Framework dans Windows Server?
- 26. Comment construire le GCC d'Apple sous Linux/Windows?
- 27. Développement de l'iPhone sous Linux, Windows
- 28. Construire un module perl Windows sous Linux
- 29. Valeur par défaut de cygwin pour utiliser CRLF
- 30. ++ i ou i ++ dans les boucles?
Pourquoi avez-vous des fichiers texte (apparemment un lot de) avec CRLF fin de ligne sur un système Unix? –
sources pour ARM qui précédemment croisé sur win32. –
La commande dos2unix va-t-elle réparer le fichier? –