Ich habe ein Git-Repository, in dem sich mein gesamter Code im Hauptzweig befindet, und ich habe zuvor nur alle Drupal-Dateien ignoriert, sodass ich streng zwischen dem von mir geschriebenen (oder geänderten oder möglicherweise geänderten) Code und dem Code unterschieden habe das könnte mit Drush oder was auch immer erzeugt werden.
Dies schien eine gute Strategie zu sein, bis ich Drupal aktualisieren musste. Mir wurde klar, dass ich in der Lage sein möchte, ein Rollback durchzuführen, wenn die Dinge schlecht liefen, und welches bessere Tool zu verwenden ist als Git, um dies zu tun. Ich dachte mir, dies wäre die perfekte Situation für einen Feature-Zweig, also habe ich einen drupal-7.14
Zweig erstellt, der es .gitignore
mir erlaubt, alle meine Code- und Einstellungsdateien zu ignorieren und nur auf Dateien zu achten, die Teil der Drupal-Installation sind, die ich nicht möchte. ' nicht berühren. Ich habe ein manuelles Upgrade durchgeführt (Herunterladen, Entpacken, Entpacken, Kopieren), Grenzfälle wie robots.txt und .htaccess durchgesehen und den .gitignore von Drupal mit meinem eigenen überschrieben. Ich habe einige Einstellungen korrigiert, die mit 7.14, aber nicht mit 7.15 funktionierten, um einen 500-Fehler zu beheben, und dann schien alles perfekt zu sein. Ich benannte die Niederlassung in um drupal-7.15
und wollte mich glücklich auf den Weg machen.
Bis ich merkte, was ich versehentlich getan hatte: Dateien, die zuvor von meinem Hauptzweig nicht verfolgt wurden, aber im Arbeitsverzeichnis verblieben waren, wurden jetzt aus dem Arbeitsverzeichnis entfernt, als ich master auscheckte, da es sich nicht mehr um nicht verfolgte Dateien handelte! D'oh!
Wenn ich die drupal-7.15
Verzweigung mit master zusammenführe, geht die Codetrennung verloren.
Es gibt wahrscheinlich eine Möglichkeit, einen Zweig in ein Submodul umzuwandeln. Vorausgesetzt, dies ist möglich, ist dies möglicherweise die beste Strategie. Ich wusste, bevor ich das tat, dass Submodule die "richtige" Lösung waren, aber da ich den Nebeneffekt der Verwendung von Zweigen für zuvor nicht verfolgte Dateien nicht erkannte, entschied ich mich, Ecken zu schneiden und diesen Weg zu gehen. (Alle Ansätze, die ich bei der Verwendung von Submodulen mit Drupal gesehen habe, setzen voraus, dass Sie ein neues Projekt starten und Drupal der Hauptzweig ist. Es ist für mich unerwünscht, den Code eines anderen zum Hauptzweig zu machen, und das hatte ich bereits ein Repo mit einem Master-Zweig. Es sah so aus, als wäre es unnötig kompliziert, nur ein Upgrade durchzuführen.)
Möglicherweise gibt es eine andere Lösung, an die ich nicht gedacht habe.
Wie kann ich mich mit den geringstmöglichen Nachteilen am besten davon erholen?
AKTUALISIEREN : Dies befindet sich in der Entwicklung (in einer Linux-VM auf meinem Laptop) und ist noch nicht in Produktion gegangen. Bis wir zur Produktion gehen, habe ich vor, alles in Feature-Modulen zu verpacken, aber das ist noch nicht alles.
UPDATE 2 : Submodulefunktionieren möglicherweise nicht. Laut Pro Git können Sie mit "Submodulen ein Git-Repository als Unterverzeichnis eines anderen Git-Repositorys speichern". Drupal bietet keine so schöne Trennung. Anstatt dass sich der gesamte Drupal-Code in einem Unterverzeichnis befindet, ist die Beziehung mehr oder weniger invertiert, aber es gibt immer noch keine saubere Trennung, da Sie möglicherweise Ihre .htaccess- und robots.txt-Datei bearbeiten, sodass Ihr Code und das Drupal-Repo miteinander vermischt werden. Ich suche nach einer Lösung für dieses Problem .