Nous allons jouer un peu avec les diff et les patchs.
Mise en place
Soit le fichier suivant README.md
1 2 3 4 5 |
|
Modifions le fichier par ceci.
1 2 3 4 5 6 7 8 9 |
|
Enregistrons celui-ci en README2.md
Et lançons la commande suivante
1
|
|
Nous obtenons le résultat suivant
1 2 3 4 5 6 7 |
|
Il y a en fait plusieurs formats
Essayez la commande suivante
1
|
|
On obtient le fichier suivant
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Cette vision doit vous être assez familière si vous faite du git, svn ou mercurial
c’est la sortie d’un git diff
si on avait modifié ce fichier.
Jouer un patch
Pour ce convaincre nous allons demander à linux de jouer le fichier .diff
qui est tout simplement un patch
Grâce à la commande suivante.
1 2 |
|
Comme toute modification je peux avoir des conflits. Si je modifie mon README.md
1 2 3 4 5 |
|
1 2 3 |
|
Vous retrouvez les fameux .orig
et .rej
qui pourrissent un peu la vie de ceux qui font du mercurial ou git (hg purge
et git clean
est probablement ce que vous cherchez).
Merger
Si vous voulez un merge. c’est possible
1
|
|
le résultat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
L’option -p0
ou le plus souvent -p1
demande à la commande patch
d’ignorer le chemin sur un niveau.
Voici un exemple avec git et le même fichier
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
on voit que la ligne a/README.md
et b/README.md
, ici pour appliquer le patch il faut utiliser -p1
pour ignorer le premier niveau (supprime le a/
et b/
)
Sous Git c’est plus simple
1
|
|
Reverter
Enfin soyons complet il est possible de reverter un patch avec -R
1
|
|
Avec git
1
|
|
Conclusion
Pas besoin d’avoir git/mercurial/svn pour créer ou jouer des patchs.