„Czy nie ma problemów, które można rozwiązać tylko poprzez zhakowanie rdzenia? Co wtedy?”
Aby odpowiedzieć na to pytanie, tak, czasami są problemy, które musisz rozwiązać, co oznacza, że musisz zhakować rdzeń (lub moduł contrib).
W tym przypadku uważam, że włamanie jest dopuszczalne, o ile umieścisz wiele komentarzy w zhakowanym kodzie i udokumentujesz wszystko, co zmienisz.
Na przykład dla każdej zmiany rdzenia lub wkładu tworzę łatkę. Jeśli jest ogólny i przydatny dla innych osób, przesyłam go do drupal.org w jednym wydaniu, w przeciwnym razie jest to na własny użytek.
Następnie zatwierdzam plik łaty do kontroli wersji wraz ze zmianą kodu.
Oznacza to, że widzę, szukając plików łat, jeśli coś zostało zhakowane.
Oprócz tego dodałem również listę hacków do dokumentacji programisty dla witryny (naprawdę powinieneś mieć dokumentację programisty ze względu na innych, którzy mogą pracować w witrynie i dla siebie, gdy nieuchronnie zapomnisz rzeczy).
W tej dokumentacji hakerskiej wymieniam każdy hack wraz z tym, co robi hack i dlaczego, dotyczy to modułów / plików, nazwy pliku łatki zawierającego kod hacka oraz link do powiązanego problemu drupal.org, jeśli taki istnieje (prawie zawsze w moim przypadku jest).
Wtedy Ty i ktokolwiek inny będzie pracował na stronie w przyszłości, ma pełną listę hacków i nie musisz się martwić o przypadkowe uszkodzenie czegoś podczas aktualizacji.
Następnie w celu aktualizacji sprawdzam swoją listę hacków i szybko szukam plików łatek we wszystkich aktualizowanych modułach. Jeśli jest hack i ma problem z drupal.org, sprawdzam ten problem, aby zobaczyć, czy najnowsza wersja zawiera łatkę, w którym to przypadku zdmuchnę hacka z aktualizacją i usunę go z mojej listy hacków (wykonaj z pewnością patrząc na komunikaty zatwierdzania drupal.org, że to, co zostało popełnione, było takie samo jak wersja używanej łatki lub przynajmniej funkcjonalnie takie samo).
Jeśli łatka nie została zatwierdzona, wszystko, co muszę zrobić, to zaktualizować moduły i ponownie zastosować łatki. W wielu przypadkach łatki będą nadal stosowane czysto, a proces jest łatwy, ale czasami trzeba przerzucić łaty do nowej wersji, a następnie zatwierdzić nową wersję poprawki do lokalnego repozytorium (wraz z opublikowaniem jej w odpowiednim problem z drupal.org, jeśli dotyczy).
Inną rzeczą, którą lubię, jeśli mam bardziej znaczące łaty lub łaty, które współdziałają z podstawową funkcją modułu (lub po prostu niestandardowe moduły, które rozciągają się na moduł drupal.org), jest sprawdzenie informacji o wydaniu zaktualizowanego modułu ( oznacza to wszystkie wersje między bieżącą wersją a wersją, którą aktualizujesz) i upewnij się, że nie ma w niej nic, co mogłoby uszkodzić kod. Uwaga: Wielu opiekunów modułów jest obecnie dobrych, podając pełne informacje o wydaniu, ale wciąż jest wiele, którzy robią śmieci. W tym przypadku w niektórych przypadkach przeglądam wszystkie komunikaty zatwierdzenia od mojej bieżącej wersji (zwykle dzieje się tak tylko w przypadkach, gdy mam złożony kod, który głęboko współdziała z innym modułem). Uwaga:
Następnie po aktualizacji (na kopii rozwojowej witryny) przetestuj dokładnie. W końcu dowiesz się, co dokładnie oznacza po kilku błędach.
Następnie, gdy zostanie wystarczająco przetestowany, uaktualnij działającą witrynę lub wypchnij lokalne aktualizacje w górę, lub jakikolwiek proces instalacji.
Powód, dla którego wszyscy mówią, nie rób tego, nawet jeśli jest to łatwiejsze: ponieważ większość ludzi nie ma systemu takiego jak ja zarysowałem, więc kiedy przychodzi czas na aktualizację lub witryna jest przekazywana komuś innemu do pracy dalej staje się koszmarem i dużo czasu (czasem ogromnej ilości czasu) trzeba poświęcić na rozwiązywanie problemów i śledzenie włamań i ustalanie, dlaczego się tam znajdują itp.
Jeśli kiedykolwiek odziedziczysz taką witrynę, w pełni to zrozumiesz :)