Bonjour zesteux,
Je code un site web en php sous windows avec WAMP. J'ai fait en sorte avec un script bash pour que quand je push sur master, le répertoire www du site est automatiquement pull. J'ai aussi un serveur de test qui se met à jour avec le même script mais quand une branche commençant par dev- est push. A la base ça fonctionne nickel. Par contre je me heurte au problème des sauts de ligne pas compatibles entre windows et linux, et c'est un problème récurrent que je n'arrive pas à résoudre définitivement.
D'après certains conseils trouvés sur le web, j'ai réglé le paramètre core.autocrlf à true sous windows et à input sous linux. Mais le problème persiste.
J'ai aussi essayé de créer un fichier .gitattributes
mais ça n'a pas non plus aidé.
A l'origine, mon repos GIT a été importé de SVN et converti automatiquement par GIT. A l'époque où j'étais sur SVN je n'avais pas ce problème, les update ne plantaient jamais.
Le scénario est le suivant:
- JE fais des modifs dans truc.php sous windows
- Je commit, puis push
- Lors du push, le script côté serveur s'exécute et tente un pull
- LE pull plante avec un message similaire à celui-ci:
1 2 3 4 | Aborting The folowing files would be overwritten by merge : truc.php Please, commit or stage your changes before you can merge |
A ce stade, j'ai beau essayer tout ce que je veux sur le serveur, je n'arrive pas à pull. LE même message d'erreur revient toujours en indiquant toujours les mêms fichiers, fichiers que je n'ai évidemment jamais modifié sur le serveur. J'ai déjà essayé toutes ces commandes sans résultat :
- stash puis pull de nouveau, comme conseillé dans le message d'erreur. JE n'ai toujours pas compris comment on utilisait cette commande stash et à quoi elle servait mais c'est un autre sujet.
- reset –hard
- reset –ahrd puis checkout, ou même checkout sur une autre branche juste pour le fun avant de revenir, auquel cas il refuse le checkout
- fetch puis checkout séparément, auquel cas il refuse le checkout
- ftech puis merge et idem
Complètement dépité, je n'ai d'autre choix que de rm -r le dossier www, et recloner complètement le dossier du projet sur le serveur. Après reclonage, ça refonctionne. Si je refais des modifs sur truc.php sous windows, que je commit et que je push, tout va bien, le pull sur le serveur aboutit sans encombre. Si je crée des nouveaux fichiers, ça fonctionne aussi. Mais dès que je touche un ancien fichier que je n'ai pas touché depuis la migration depuis SVN, ça recommence et je suis de nouveau bon pour tout virer et tout recloner.
Est-ce qu'il n'y aurait pas un moyen de résoudre définitivement ce problème à la con ? Je n'ai pas envie de mettre le boxon et d'être embêté sous windows après, je tiens absolument à ne pas commit dans le repos qui est sur le serveur web.
Merci pour vos réponses