"Non ci sono problemi che possono essere risolti solo dall'hacking del core? Cosa succede allora?"
Per rispondere a questa domanda, sì, a volte ci sono problemi che devi superare, questo significa che devi hackerare il core (o un modulo contrib).
In questo caso credo che sia giusto hackerare fino a quando inserisci molti commenti nel tuo codice compromesso e documenti tutto ciò che cambi.
Ad esempio, per qualsiasi modifica di core o contrib che faccio creo una patch. Se è generico e utile ad altre persone, lo invio a drupal.org in un problema, altrimenti è per uso personale.
Quindi eseguo il commit del file patch sul mio controllo versione insieme alla modifica del codice.
Questo significa che posso vedere cercando file patch se qualcosa è stato violato.
Inoltre, aggiungo anche un elenco di hack alla documentazione per sviluppatori per il sito (dovresti davvero avere la documentazione per sviluppatori per il bene di altri che potrebbero funzionare sul sito e per te stesso quando inevitabilmente dimentichi le cose).
In questa documentazione di hacking, elencherò ogni hack con ciò che fa l'hacking e perché, i moduli / file interessati, il nome del file patch che contiene il codice di hacking e un collegamento a un problema relativo a drupal.org se ce n'è uno (quasi sempre nel mio caso c'è).
Quindi tu e chiunque altro lavori sul sito in futuro hai un elenco completo di hack e non devi preoccuparti di rompere accidentalmente qualcosa con un aggiornamento.
Quindi, per il processo di aggiornamento, controllo il mio elenco di hack e ho una rapida occhiata ai file patch in tutti i moduli che sto aggiornando. Se c'è un hack e ha un problema con drupal.org, controllo il problema per vedere se l'ultima versione ha la patch inclusa, nel qual caso esplodo con l'aggiornamento e lo rimuovo dal mio elenco di hack certo guardando i messaggi di commit di drupal.org ciò che è stato eseguito era lo stesso della versione della patch che stai usando, o almeno funzionalmente lo stesso).
Se la patch non è stata impegnata, tutto ciò che devo fare è aggiornare i moduli e riapplicare le patch. In molti casi le patch si applicheranno comunque in modo pulito e il processo è semplice, ma a volte è necessario rileggere le patch per la nuova versione e quindi eseguire il commit della nuova versione della patch nel repository locale (insieme alla pubblicazione nel relativo problema di drupal.org ove applicabile).
Un'altra cosa che mi piace fare se ho patch o patch più sostanziali che interagiscono con la funzionalità principale di un modulo (o solo moduli personalizzati che si estendono su un modulo drupal.org), è controllare le note di rilascio del modulo aggiornato ( ciò significa che tutte le versioni tra la versione corrente e la versione a cui si sta eseguendo l'aggiornamento) e assicurarsi che non vi sia nulla che possa violare il codice. Nota: molti manutentori dei moduli sono bravi in questi giorni nel dare note complete sulla versione, ma ci sono ancora molte cose che rilasciano le note sulla versione. In questo caso in alcuni casi passo attraverso tutti i messaggi di commit dalla mia versione corrente (questo di solito è solo nei casi in cui ho un codice complesso che interagisce profondamente con un altro modulo). Nota:
Quindi, dopo l'aggiornamento (su una copia di sviluppo del sito), testare accuratamente. Alla fine imparerai cosa significa completamente dopo che alcuni bug sono passati.
Quindi, quando è stato testato a sufficienza, aggiorna il sito live o spingi gli aggiornamenti locali verso l'alto o qualunque sia il tuo processo di distribuzione.
Il motivo per cui tutti dicono di non farlo, anche se è più facile: perché la maggior parte delle persone non ha un sistema come quello che ho descritto, quindi quando arriva il momento di fare aggiornamenti o il sito viene consegnato a qualcun altro per lavorare su, diventa un incubo e molto tempo (a volte un'enorme quantità di tempo) deve essere speso per risolvere bug e rintracciare gli hack e capire perché sono lì, ecc.
Se erediti mai un sito del genere, capirai completamente :)