Verwalten von Websites mit Git

8

Ich fange an, Git zum Verwalten von Joomla-Site-Builds zu verwenden, und suche nach Best-Practice-Anleitungen. 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 im entsprechenden public_htmlVerzeichnis abzulegen sowie die Datenbank und den DB-Benutzer zu erstellen
  • Installieren Sie Joomla manuell über das Webinterface (obwohl Sie derzeit nach einer Möglichkeit suchen, dies ebenfalls zu automatisieren).
  • Richten Sie oben ein nacktes Repo ein public_html- hier drücken und ziehen Benutzer. Wir werden das nennenorigin
  • Richten Sie ein Standard-Repo ein public_html
  • Fügen Sie eine Joomla-spezifische hinzu .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", dann git push origin masterbekommen den Standard in unserer bloßen Repo installieren
  • Fügen Sie post-receivedem Bare-Repo einen Hook hinzu, um Änderungen automatisch in das Repo-In zu übernehmen public_html(da Entwickler im Bare-Repo lokale Änderungen vornehmen).
  • Fügen Sie post-updatedem Repo einen Hook hinzu, public_htmlfalls jemand Änderungen am 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. Während ich Vorlagen und Erweiterungen installiere, werden natürlich bestimmte Dateien hinzugefügt und entfernt. Ebenso führen Joomla-Updates zu Änderungen.

Was ist der beste Weg, um mit diesen Änderungen auf dem Server umzugehen? Ich dachte an ein kleines Plugin zu schreiben , dass Läufe onAfterRenderoder ähnlich , dass Verwendungen PHPGit auszuführen git add ., git commit git push origin master. Dann kann ich in meiner lokalen Kopie einfach ziehen und alles kommt durch. Oder gibt es einen besseren Weg?

Codierungshände
quelle

Antworten:

4

Ich verstehe nicht, warum Sie die nackte / öffentliche Struktur eingerichtet haben;

Ich verwende nur public_html als Stammverzeichnis des Repos mit einem sehr vollständigen .gitignore (der nach jedem neuen Joomla! -Update aktualisiert werden muss, wobei git statusSie die neuen Dateien finden und hinzufügen, damit sie nicht versioniert werden).

Entwickler drängen auf Entwicklungszweige; Am Ende, wenn eine Veröffentlichung genehmigt wird, wird sie gegen den Master neu basiert, getestet und in die Produktion gebracht.

Ich verwende keine Hooks, habe aber einige Skripte, die die relevanten Datenbankteile sichern, die ich freigeben möchte, aber es dem Benutzer überlässt, die Importskripte auszuführen, wenn er möchte. Auf diese Weise behält jemand, der an einer neuen Erweiterung arbeitet, seine Konfiguration bei, bis er zur Freigabe bereit ist.

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

- Update: .gitignore -

Ich kann meinen .gitignore hier nicht teilen, da er sich mit jedem Joomla! aktualisieren. Stellen Sie zunächst sicher, dass sich Ihre Eclipse-Projekteinstellungen 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 bösen Komponenten, die Änderungen in ihre eigenen Ordner anstelle von Cache und TMP schreiben. Außerdem wird Sass verwendet:

*/.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

Also beginne ich mit dem Kopieren (vom Webstamm):

cp /home/_core/.gitignore .

Dann explodieren Sie das Update Pack (das vollständige Update Package) und führen es dort aus

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

WARNUNG Führen Sie den Fund nicht auf der Live-Site aus, sondern nur auf dem Update-Paket!

Führen Sie ein paar Tests durch und sehen Sie mit dem Git-Status, was jedes Mal hinzugefügt wird, bevor Sie die Prozedur abschließen und Bash-Skripte dafür schreiben: Dies ist das, was ich verwende, aber es ist nicht garantiert, dass es Ihren Anforderungen zu 100% entspricht

Riccardo Zorn
quelle
Vielen Dank für Ihre Antwort - wären Sie bereit, Ihre zu veröffentlichen .gitignore? Derzeit bin ich der einzige Entwickler und ich bin ziemlich neu in Git, daher habe ich einige Online-Workflow-Anleitungen für Webentwickler befolgt, um mich dahin zu bringen, wo ich bin, was zu einer nackten / öffentlichen Struktur führte.
Codinghands
Nein, ich werde es hier nicht einfügen. Ich habe gerade Anweisungen zum Erstellen hinzugefügt
Riccardo Zorn
Hallo Riccardo - danke, ich habe schon eine ziemlich vollständige .gitignore, wollte nur irgendwelche Unterschiede sehen.
Codinghands
Sie können Ordner global ignorieren. Beispiel: cache/Um Cache-Ordner überall zu ignorieren, fügen Sie sie einfach zu Ihrem .gitignore hinzu
jackJoe