Per la creazione di una patch servono i seguenti passaggi.
- Aggiornate il branch master tirando le ultime modifiche
create un branch per lo scopo (es. patch)
git checkout -b patch
- fate le modifiche necessarie dove state lavorando (es. web/modules/contrib/basicshib/src/AuthenticationHandler.php)
appena finite fate un commit es.
$ git commit -m"basicshib force https on target redirect" [patch cecd10cde] basicshib force https on target redirect 1 file changed, 3 insertions(+), 2 deletions(-)
Una volta che abbiamo il commit creiamo la patch tramite git
git format-patch origin/master (prende come riferimento l'origin del branch master) git format-patch master (prende come riferimento la nostra copia in locale del branch master)
- questo genera un file per commit di differenza tra i due branch, ma visto che abbiamo fatto un branch subito prima di cominciare di lavorare, genera soltanto un commit come patch e lo salva nella root del progetto (se abbiamo lanciato il comando del git dalla root del nostro progetto; in questo caso mi ha creato la 0001-basicshib-force-https-on-target-redirect.patch (prende come nome per la patch il commento che abbiamo messo nel commit di prima).
- All'interno questa patch genera percorsi che non vanno bene per composer, quindi bisogna modificarla un po'.
diff --git a/web/modules/contrib/basicshib/src/AuthenticationHandler.php b/web/modules/contrib/basicshib/src/AuthenticationHandler.php index 282fc4832..2db2f472b 100644 --- a/web/modules/contrib/basicshib/src/AuthenticationHandler.php +++ b/web/modules/contrib/basicshib/src/AuthenticationHandler.php
in particolare solo in queste righe dove c'è la diff --git e le seguenti due righe che segnalano le differenze non ci deve essere web/ nel percorso.
Quindi va tolto, a mano, oppure utilizzando uno script come per esempio
Una volta posizionato il file nel vostro filesystem, bisogna dare i permessi di esecuzione
chmod +x fix_patch_paths.sh
Io per comodità l'ho inserito in $HOME/.gitconfig come alias
fix-patch = "!f() { $HOME/bin/fix_patch_paths.sh \"$1\"; }; f"
Quindi quando ho bisogno di creare una patch
git format-patch master git fix-patch /home/toli/portals/prod_unimibd9/0001-basicshib-force-https-on-target-redirect.patch (percorso assoluto)
Ora bisogna inserirlo nel composer:
e posizionare la nostra patch all'interno della cartella patches, situata nella root della nostra directory.
Fatto; metto il resto dei comandi che io di solito utilizzo, per riportare tutte le modifiche in master