Ho due applicazioni residenti in due cartelle diverse che condividono uno stesso file (ad esempio il file contiene una stessa istruzione sql che viene emendata).
È chiaro che in partenza una situazione del genere non è nemmeno consigliabile. Però questa è la condizione del software del mio cliente e per non dover fare una profonda ristrutturazione devo metterci una… “patch”. Chiedo venia.
A parte gli scherzi, devo apportare la stessa modifica a due file uguali in due applicazioni diverse.
- Estraggo la patch applicata al primo repository
$ git diff [ID COMMIT1] [ID COMMIT2] > diff.patch
- Sposto il file ottenuto che contiene la patcj da applicare (
diff.patch
) nella cartella del secondo repository
$ mv diff.patch [altraCartella]
- Applico la patch al secondo repository Git
$ git apply diff.patch
Se la patch è applicabile Git lo farà.
Se i file sono diversi non lo farà.
Infatti il contenuto della patch è
marcob@jsbach[15:29:18]:altraCartella$ cat diff.patch diff --git a/inviti/inv610.db.inc.php b/inviti/inv610.db.inc.php index 9d9b678..797f68d 100644 --- a/inviti/inv610.db.inc.php +++ b/inviti/inv610.db.inc.php @@ -272,7 +272,7 @@ where and d.id_tipo = f.id - and f.cod in (1, 2, 4, 5) + and f.cod in (1, 2, 3, 4, 5)
Git controlla prima che l’hash del secondo file (di arrivo) sia uguale al file da emendare: se sono diversi, vuol dire che non posso applicare la patch e Git terminerà.
Questa volta mi è andata di lusso.
Commenti recenti