Development:Git Patch erstellen
Wer einen Patch bereit stellen möchte kann mit Git direkt fertige importierbare Patchfiles erstellen. Die nötigen Funktionen dazu werden durch Git direkt ohne Zusatzsoftware zur Verfügung gestellt. Unter CVS und auch unter SVN werden zusätzliche tools wie diff und patch benötigt. Durch diese Git Eigenheit wird das Arbeiten mit Git auch für die Entwickler deutlich vereinfacht.
Wer also einen Patch zur Verfügung stellen will kann wie folgt vorgehen.
Inhaltsverzeichnis
Vorbereitung
Sicherstellen das ein gültiger Authorname und eine gültige Emailadresse hinterlegt ist. Wenn nicht dies global für alle Git Repositorys nach holen.
git config --global user.name "Firstname Lastname" git config --global user.email "your_email@youremail.com"
Oder nur für das lokale Git Repository.
cd /Pfad/zum/Repository git config user.name "Firstname Lastname" git config user.email "your_email@youremail.com"
Quellcode verändern
Diese Schritt ist genauso wie bei anderen SCM Systemen. Man verändert den Quellcode um die gewünschten Veränderungen.
git pull # adding some modifications
Patch erstellen
Dieser Schritt ist recht einfach. Dazu gibt es einen git Befehl. Zuvor müssen die Quellcodeveränderungen committet werden. Also zunächt einen Commit durchführen. Dazu kann einfach git commit -a verwendet werden wenn Ihr wirklich nur die Dateien verändert hat die zum Commit gehören. Wenn nicht per git add <Datei1> <Datei2> ... die relevanten Dateien selktiv hinzufügen und abschließend git commit aufrufen. Hier im Beispiel eine einfache Veränderung der neutrino.cpp.
user@pc~/gitprojects/buildsystem-cs/source/neutrino-hd [tuxbox-port]$ vi src/neutrino.cpp user@pc~/gitprojects/buildsystem-cs/source/neutrino-hd [tuxbox-port]$ git commit -a [tuxbox-port 5756abf] neutrino.cpp: changing debug output to use macro dprintf 1 files changed, 2 insertions(+), 2 deletions(-)
Nun liegen die Veränderungen im lokalen Git Repo und können per git format-patch [BRANCH] als Patch ausgegeben werden. Im Beispiel wurde die neutrino.cpp vom Branch tuxbox-hd/tuxbox-port verändert. Daher dann auch der git-format-patch Befehl gegen diesen Branch. Würde man gegen origin/master in dem Falle den Befehl anwenden dann würden auch alle Patche ausgegegeben werden die sich zwischen tuxbox-hd/tuxbox-port und origin/master ergeben.
user@pc~/gitprojects/buildsystem-cs/source/neutrino-hd [tuxbox-port]$ git format-patch tuxbox-hd/tuxbox-port 0001-neutrino.cpp-changing-debug-output-to-use-macro-dpri.patch
Das ist eigentlich schon alles. Diese Datei(en) können nun an einen Entwickler geschickt werden.
einen Patch von einer dritten Person erhalten
Es ist möglich das Ihr von einer anderen Person einen Patch erhalten habt und diesen weiter geben wollt. Wenn diese Person nun wiederum den Patch nicht selber weitergeben wollte aber trotzdem einverstanden ist das der Patch weiter gegeben werden kann dann könnt Ihr diesen Patch noch mit einem SignOff versehen. Dazu einfach die Option --signoff beim git-format-patch mit angeben.
user@pc~/gitprojects/buildsystem-cs/source/neutrino-hd [tuxbox-port]$ git format-patch tuxbox-hd/tuxbox-port --signoff 0001-neutrino.cpp-changing-debug-output-to-use-macro-dpri.patch
Danach wie oben schon beschrieben den Patch an einen Developer weiter geben.