Mam repozytorium Git, w którym cały mój kod znajduje się w gałęzi master, a poprzednio po prostu ignorowałem wszystkie pliki Drupal, więc zachowałem ścisłą separację między kodem, który napisałem (lub zmodyfikowałem lub mógłbym zmodyfikować) a kodem które można wygenerować za pomocą Drusha lub cokolwiek innego.
To wydawało się dobrą strategią, dopóki nie musiałem ulepszać Drupala. Uświadomiłem sobie, że chcę móc wycofać się, jeśli coś pójdzie nie tak, i jakiego lepszego narzędzia użyć do tego celu niż Git. Pomyślałem sobie, że będzie to idealna sytuacja dla gałęzi funkcji, więc stworzyłem drupal-7.14
gałąź, dałem jej własną, .gitignore
aby zignorować cały mój kod i pliki ustawień i zwracać uwagę tylko na te pliki, które są częścią instalacji Drupal, których nie chciałbym dotykać. Zrobiłem aktualizację ręcznie (pobieranie, rozpakowywanie, rozpakowywanie, kopiowanie), sortując przypadki graniczne, takie jak robots.txt i .htaccess, i zastępując .gitignore Drupala własnym. Naprawiłem niektóre ustawienia, które działały z 7.14, ale nie z 7.15, aby odzyskać po błędzie 500, a potem wszystko wydawało się idealne. Zmieniłem nazwę oddziału drupal-7.15
i już miałem iść szczęśliwie.
Dopóki nie zdałem sobie sprawy z tego, co nieumyślnie zrobiłem: pliki, które wcześniej nie zostały wyśledzone przez moją gałąź master, ale pozostały w katalogu roboczym, były teraz usuwane z katalogu roboczego podczas sprawdzania master, ponieważ nie były już plikami nie śledzonymi! Nie!
Jeśli połączę drupal-7.15
gałąź z mistrzem, utracę separację kodu.
Prawdopodobnie istnieje sposób na konwersję gałęzi do submodułu. Zakładając, że to możliwe, może to być najlepsza strategia. Zanim to zrobiłem, wiedziałem, że submoduły są „właściwym” rozwiązaniem, ale ponieważ nie zdawałem sobie sprawy z efektu ubocznego używania rozgałęzień dla plików wcześniej nie śledzonych, postanowiłem skrócić rogi i pójść tą drogą. (Również wszystkie podejścia, które widziałem przy użyciu podmodułów z Drupalem, zakładają, że zaczynasz nowy projekt, a Drupal będzie gałęzią master. Nie jest dla mnie pożądane, aby uczynić kod kogoś innego gałęzią master, a ja już to zrobiłem repozytorium z gałęzią master. Wyglądało na to, że samo uaktualnienie byłoby niepotrzebnie skomplikowane).
Może być jakieś inne rozwiązanie, o którym nie myślałem.
Jak najlepiej się z tego zregenerować przy jak najmniejszej liczbie wad?
AKTUALIZACJA : Jest w fazie rozwoju (na maszynie wirtualnej z systemem Linux na moim laptopie) i nie została jeszcze wprowadzona do produkcji. Zanim przejdziemy do produkcji, planuję mieć wszystko opakowane w moduły funkcji, ale to jeszcze nie jest na miejscu.
AKTUALIZACJA 2 : Podmoduły mogą nie działać. Według Pro Git „Submodules pozwalają zachować repozytorium Git jako podkatalog innego repozytorium Git”. Drupal nie zapewnia tak miłej separacji. Zamiast całego kodu Drupala znajdującego się w podkatalogu, relacja jest mniej więcej odwrócona, ale nadal nie ma czystej separacji, ponieważ możesz edytować swój plik .htaccess i plik robots.txt, więc kod i repozytorium Drupal są ze sobą mieszane. Ja patrząc na obejście tego problemu .