it-swarm.com.de

Verwalten von Websites mit Git

Ich fange an, Git zum Verwalten von Joomla-Site-Builds zu verwenden, und suche nach Anleitungen für bewährte Vorgehensweisen. So wie es steht:

  • Verwenden Sie WHM, um ein neues Konto bereitzustellen. Ich habe einen Post-Install-Hook geschrieben, um Joomla automatisch von Github herunterzuladen und in das entsprechende public_html - Verzeichnis zu legen sowie die Datenbank und den DB-Benutzer zu erstellen
  • Joomla manuell über das Webinterface installieren (obwohl derzeit nach einer Möglichkeit gesucht wird, dies ebenfalls zu automatisieren)
  • Richten Sie ein nacktes Repo über public_html Ein - hier drücken und ziehen Benutzer. Wir nennen das Origin
  • Richten Sie ein Standard-Repo in public_html Ein
  • Fügen Sie eine Joomla-spezifische .gitignore
  • Geben Sie das nackte Repo als unsere Fernbedienung an (git remote add Origin ../repo.git)
  • Führen Sie git add ., Dann git commit -m"Initial J! Commit" Und dann git Push Origin master Aus, um die Standardinstallation in unserem Bare Repo zu erhalten
  • Fügen Sie dem Bare-Repo einen Haken post-receive Hinzu, um Änderungen automatisch in das Repo in public_html Zu übernehmen (da die Entwickler beim Bare-Repo lokale Änderungen an Push senden).
  • Fügen Sie dem Repo in post-update Einen Haken public_html Hinzu, falls jemand Änderungen auf dem Server vornimmt ... obwohl dies nicht der Fall sein sollte

Ich mache mir im Moment keine allzu großen Sorgen um Datenbanken. Mein Hauptproblem ist jetzt das Hinzufügen/Ändern von Joomla-Dateien. Natürlich werden beim Installieren von Vorlagen und Erweiterungen bestimmte Dateien hinzugefügt und entfernt. In ähnlicher Weise verursachen Joomla-Updates Änderungen.

Was ist der beste Weg, um mit diesen Änderungen auf dem Server umzugehen? Ich wollte ein kleines Plugin schreiben, das onAfterRender oder ähnliches ausführt und PHPGit verwendet, um git add ., git commitgit Push Origin master Auszuführen. Dann kann ich in meiner lokalen Kopie einfach ziehen und alles kommt durch. Oder gibt es einen besseren Weg?

8
codinghands

Ich verstehe nicht, warum Sie die bloße/öffentliche Struktur eingerichtet haben.

Ich benutze nur public_html als Root des Repos, mit einem sehr vollständigen .gitignore (der nach jedem neuen Joomla! -Update aktualisiert werden muss, mit git status Findest du die neuen Dateien und fügst sie hinzu, damit sie nicht ' versioniert werden).

Entwickler Push zu Entwicklungszweigen; Am Ende, wenn ein Release genehmigt wird, wird es gegen den Master rebasiert, getestet und an die Produktion weitergeleitet.

Ich verwende keine Hooks, sondern habe ein paar Skripte, die die relevanten Datenbankteile sichern, die ich freigeben möchte, aber überlasse es dem Benutzer, die Importskripte auszuführen, wenn er dies möchte. Auf diese Weise behält jemand, der an einer neuen Erweiterung arbeitet, seine Konfiguration bei, bis er bereit ist, sie freizugeben.

Wenn Sie less/sass verwenden, möchten Sie möglicherweise die Kompilierung in den Post-Commit-Hooks ausführen, um sicherzustellen, dass die Komprimierungsflags immer auf dem Server aktiviert sind.

- Update: .gitignore -

Ich kann meine .gitignore hier nicht teilen, da sie sich mit jedem Joomla! aktualisieren. Stellen Sie zunächst sicher, dass sich Ihre Eclipse-Projekteinstellungen usw. und andere Dateien, die Sie ausschließen möchten, zusammen mit configuration.php und .htaccess in einem Master-Gitignore befinden. Mein Master-.gitignore sieht so aus für eine Site mit unangenehmen Komponenten, die Änderungen in ihre eigenen Ordner schreiben, anstatt in Cache und tmp. plus es benutzt sass:

*/.sass-cache
/components/com_sobipro/var/cache/*
/components/com_djclassifieds/images/*
/components/com_sobipro/tmp/*
/components/com_sobipro/var/*
/log
/._db.sql
/logs
/stats
/components/com_sobipro/tmp/edit/*
/.buildpath
/.project
/.settings
/.htaccess
/images/icons/*
/images/photos/*
/images/sobipro/*
/images/classifieds/*
/administrator/cache/*
/tmp/*
/configuration.php
/index.php
/joomla.xml
*.txt

ich beginne mit dem Kopieren (aus dem Webstamm):

cp /home/_core/.gitignore .

Dann das Update Pack (das vollständige Update-Paket) auflösen und dort ausführen

find | sed "s/^\.//"  >> /home/yoursitefolder/public_html/.gitignore

WARNING Suche nicht auf der Live-Site, sondern nur im Update-Paket!

Führen Sie einige Tests durch und überprüfen Sie anhand des Git-Status, was jedes Mal hinzugefügt wird, bevor Sie die Prozedur abschließen und Bash-Skripte dafür schreiben.

4
Riccardo Zorn