Webserver directory in GitLab "tracken"

aGeNET

Erfahrenes Mitglied
Moin Moin,

eine Sache die mich schon seit Tagen wurmt und zu der ich im Netz keine gescheiten Informationen finden kann, da ich wohl mit den falschen Begriffen suche bzw. die richtigen nicht kenne.
Vorweg sei gesagt, dass ich nur Basiskenntnisse von Git habe und daher um eine einfache und auch für DAUs nachvollziehbare Erklärung bitte.

Wir haben einen Rootserver. Webserver, Git und GitLab und die dazugehörigen Sachen sind installiert und funktionieren unabhängig voneinander auch.

GitLab
Code:
Domain: http://git.example.com
Directory: /var/opt/gitlab/

Webserver
Code:
Domain: http://www.example.com
Directory: /var/www/vhosts/example.com/httpdocs/

Jetzt sollen die einzelnen Verzeichnisse innerhalb von /var/www/vhosts/example.com/httpdocs/ als Repository oder auch Branches dienen. An den Dateien wird generell "online" via SFTP gearbeitet. Lokale Repositories auf den Mitarbeiter-PCs fallen daher von vornherein schonmal weg. Jeder Mitarbeiter soll die Möglichkeit haben an einem oder mehreren Branch(es) zu arbeiten und die Entwicklung(en) live auf dem Webserver zu testen. Wenn die Arbeit abgeschlossen ist, soll der Entwickler seine Änderungen committen können und diese commits sollen anschließend auch im GitLab sichtbar sein.

Wie lässt sich das Problem sinnvoll lösen?

MfG
 

Nino14

Erfahrenes Mitglied
Hallo,

Zuerst einmal: Es tut mir Leid, dass ich dir keine direkt Antwort auf deine Frage geben kann.

Da du von Mitarbeiter-PCs und Mitarbeitern sprichst, gehe ich davon aus, dass du für ein Unternehmen tätigt bist, und es sich nicht um ein rein privates Projekt handelt.
Sollte das zutreffen, würde ich euch empfehlen, dass sich mindestens einer von euch ausführlich mit der Funktionsweise von git auseinander setzt.
Eines der Grundprinzipien von git ist es, dass es sich um eine verteile Versionsverwaltung handelt.

Wenn Ihr mit Versionsverwaltung generell und auch mit git arbeiten wollt, empfehle ich euch ganz grob folgende Dinge:

Das Verzeichnis /var/www/vhosts/example.com/httpdocs/
Wäre ich der Admin des Servers könnte ich nicht mehr ruhig schlafen, wenn der Apache meines produktiven Servers Zugriff auf mein Repository hat. Git legt in dem Stammverzeichnis des Repositories das Unterverzeichnis .git an. Das heißt in deinem konkretem Beispiel: Alle Information zu dem Sourcecode liegen in dem Verzeichnis /var/www/vhosts/example.com/httpdocs/.git/.
Aus diesem Unterverzeichnis kann dann jeder den gesamten Sourcecode inkl. aller älteren Version auslesen.

Zwei Entwickler arbeiten an der selben Webseite
Oder auch Grafiker und Entwickler arbeiten an der selben Webseite.
Jetzt kommen wir zu dem Punkt, an dem einer von den beiden fertig ist und gerne seinen Sachen committen möchte. Das ist zwar prinzipiell möglich, aber es wird dir unheimlich schnell passieren, dass der Entwickler aus versehen Dinge des Grafikers mit committet. Damit machst du dir deine ganze Versionsverwaltung kaputt.

Der Autor des Commits
Zu jeden commit speicher git unter anderem wer diesen commit gemacht hat. Das ist ein Feature, dass bei der Fehlereingrenzung sehr hilfreich ist (z. B. einen Code mit git blame durchgehen, ...). Um hier das Problem muss ich ein wenig weiter ausholen:
Git hat verschiedene Arten von Konfigurationen: Dazu gehört einerseits die Konfiguration auf Basis des lokalen Repos: Das heißt alle Einstellungen werden in dem oben erwähnten Unterverzeichnis .git abgelegt und gelten damit für alle User, die in diesem Verzeichnis commiten. Dann gibt es noch die Benutzer weite Konfiguration: Das gilt für alle ausgeführten git Befehle die mit diesem Linux Benutzer ausgeführt werden. Ich vermute, dass nicht jeder Entwickler einen eigenen Linux User auf dem Live-Server hat oder?
Jetzt wieder zu dem eigentlichem Problem: Der Author des commits wird von git aus den genannten Konfigurationen zu lesen. Damit führen solche Umgebungen dazu, dass jeder commit den selben Autor hat. Damit geht dir eine meiner Meinung nach wichtige Funktion von git verloren.

Live Entwicklung
Ich hoffe, dass der Entwickler nicht wirklich an der live Webseite arbeitet sondern nur "live" an einem Testsystem?

Empfehlung:
Entschuldigung für den lagen Text. Abschließen noch die Empfehlung, die ich dir mit auf den Weg geben möchte:
Ihr versucht mit git einen Workflow umzusetzen, der nicht wirklich zu git passt. Wenn ihr schon den Umstieg auf eine Versionsverwaltung vor habt, dann überdenkt in diesem Weg doch auch gleich euren Workflow. Wo kann ich Probleme vermeiden, wie kann ich mir die Arbeit bequemer, einfacher und damit weniger fehleranfällig machen?
Grundsätzlich würde ich dir für so ein umfangreiches Thema aber empfehlen externe Unterstützung ins Unternehmen zu holen (schreib mir gerne eine PN). Das ist zwar meist nicht die günstigste Variante, hilft dir aber langfristig sehr viel weiter.

Wie schon gesagt: Eine fertige Lösung konnte ich dir hier nicht geben, aber ich hoffe ich habe dir ein paar Ansätze zum Nachdenken mit auf den Weg geben.

VG
Nino