Upload via Gerrit
=================

Zunaechst sei einmal auf die Manpage :doc:`git-workflow` verwiesen.

Upload / Push ohne Review
-------------------------

Ihr folgt dem :doc:`git-workflow` einfach vollstaendig. Eure Aenderungen
werden direkt in die aktive Mudlib uebertragen.

Upload / Push mit Review
------------------------

Folgt dem :doc:`git-workflow` bis Schritt 4 (einschliesslich). Ab dort gehts
wie folgt weiter:

  5. Pusht eure Aenderungen zum Review nach Gerrit:
     ``git push origin lokalerbranch:refs/for/master``
     Damit werden eure Aenderungen des Zweigs lokalerbranch in den Review fuer
     den master-Zweig im MG uebertragen.
     Fuer jeden Commit wird ein Change in Gerrit erzeugt.
     Ihr bekommt in der Ausgabe auch die URL zum Change, den ihr erzeugt habt.
     Anschliessend tragt ihr entweder dort auf der Weboberflaeche einen oder
     mehrere Reviewer ein oder redet mit denjenigen im Mud.

  6. Die Reviewerin hat oft Wuensche, d.h. ihr muesste den Change nochmal
     ueberarbeiten. Dazu gibt es zwei Moeglichkeiten:

     a) Ihr aendert auf der Weboberflaeche selber (``Edit`` und spaeter dann
        ``Publish Edit``
     b) Wollt ihr bei euch lokal auf dem Rechner nur einen (den letzten Commit
        in eurem lokalen Zweig) aendern geht das am
        besten mit ``git commit --amend``.
        Spaetestens nach dieser Aenderungen **muss** in der Commit-Message
        die sog. Change-ID aus Gerrit als *letzte Zeile* und mit einer
        Leerzeile getrennt auftauchen, z.B.
        ``Change-Id: Ie8fe15834a0eb3917318dc291b97a28e34b85b75``.
        Anschliessend koennt ihr wie in Schritt 4. erneut pushen und der
        Change in Gerrit wird aktualisiert.
     c) Wollt ihr mehrere Commits bei euch lokal auf dem Rechner aendern,
        muesst in eurem lokalen Zweig ein sog. interaktives rebase machen und
        in diesem dann eure Commits editieren.
        Wechselt in euren lokalen Zweig und benutzt ``git rebase -i master``
        (dies bedeutet "setze diesen Zweig neu auf den master auf und lass
        mich dabei Aenderungen vornehmen").
        Spaetestens hierbei **muss** in allen Commit-Messages die zu diesem
        Commit passende Change-ID aus Gerrit als *letzte Zeile* und mit einer
        Leerzeile getrennt auftauchen.
        Anschliessend koennt ihr wie in Schritt 4. erneut pushen und alle
        Changes in Gerrit werden aktualisiert.

  7. Wenn die Reviewerin zufrieden ist, wird sie den Change in den Zweig
     'master' mergen und er landet damit im MG.


Weitere Infos
-------------

Es gibt noch viele weitere Informationen, wie man Aenderungen in Gerrit
bekommt (z.B. kann man direkt mit dem ersten Push automatisiert Reviewer fuer
alle Changes festlegen, Topics und Hashtags zur Kategorisierung verwenden). Es
ist empfehlenswert, in die Doku von Gerrit zu schauen:

  * https://mg.mud.de/gerrit/Documentation/user-upload.html
  * https://mg.mud.de/gerrit/Documentation/user-upload.html#push_create
  * https://mg.mud.de/gerrit/Documentation/user-upload.html#push_replace

Mehr Informationen ueber die Change-ID bekommt ihr hier:
https://mg.mud.de/gerrit/Documentation/user-changeid.html

Ihr koennt git auch beibringen, dass in alle eure Commit-Messages die sog.
Change-ID automatisch ergaenzt wird, in dem ihr einen 'commit-msg' hook aus
Gerrit in euerem Repository installiert:
``scp -p -P 29418 <user>@mg.mud.de:hooks/commit-msg .git/hooks/``
Details bekommt ihr hier:
https://mg.mud.de/gerrit/Documentation/user-changeid.html#creation

Die Doku geht auch auf haeufige Taetigkeiten im Zusammenhang mit dem Upload
von Aenderungen ein:
https://mg.mud.de/gerrit/Documentation/user-changeid.html#_git_tasks


Siehe auch
----------

  * gerrit
  * Doku von Gerrit:

    * https://mg.mud.de/gerrit/Documentation/intro-user.html
    * https://mg.mud.de/gerrit/Documentation/index.html#_tutorials

  * git-howto: Wie git benutzt wird
  * git-workflow: Wie man sinnvoll vorgehen kann beim Entwickeln
  * git-kooperation: Ein ueber git-workflow hinausgehendes Beispiel zur
    Synchronisation bzw Kooperation mehrerer Magier/Rechner
  * gerrit-sync: Wie die Synchronisierung zw. git-Repos und Mudlib ablaeuft
  * git-faq: haeufig gestellte Fragen/Probleme

