Development:Git Patch erstellen: Unterschied zwischen den Versionen

Aus TuxBoxWIKI
Zur Navigation springen Zur Suche springen
(Git Patch erstellen)
 
(Foramtierungen mit SHL, Typos, Formulierungen angepasst)
Zeile 1: Zeile 1:
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 einen [[Patch]] bereit stellen möchte, kann mit [[Git]] direkt fertige importierbare Patchfiles erstellen. Die nötigen Funktionen werden durch [[Git]] direkt ohne Zusatzsoftware zur Verfügung gestellt. Unter [[CVS]] oder auch [[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.
Dazu kann man wie folgt vorgehen.


= Vorbereitung =
= 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.
Sicherstellen das ein gültiger Authorname und eine gültige Emailadresse hinterlegt ist. Wenn nicht, dies global für alle [[Git]] Repositories nachholen.
git config --global user.name "Firstname Lastname"
<source lang="bash">
git config --global user.email "your_email@youremail.com"
git config --global user.name "Firstname Lastname"
Oder nur für das lokale Git Repository.
git config --global user.email "your_email@youremail.com"
cd /Pfad/zum/Repository  
</source>
git config user.name "Firstname Lastname"
Oder nur für das lokale [[Git]] Repository.
git config user.email "your_email@youremail.com"
<source lang="bash">
cd /Pfad/zum/Repository  
git config user.name "Firstname Lastname"
git config user.email "your_email@youremail.com"
</source>


= Quellcode verändern =
= Quellcode verändern =
Diese Schritt ist genauso wie bei anderen SCM Systemen. Man verändert den Quellcode um die gewünschten Veränderungen.
Diese Schritt ist genauso wie bei anderen SCM-Systemen. Man verändert den Quellcode mit den eigenen gewünschten Veränderungen.
git pull
<source lang="bash">
# adding some modifications
git pull
# adding some modifications
</source>


= Patch erstellen =
= 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.
Dieser Schritt ist recht einfach. Dazu gibt es einen [[Git]]-Befehl. Zuvor müssen die Quellcodeveränderungen committet werden. Also zunächst einen Commit durchführen. Wenn Ihr wirklich nur die Dateien verändert habt, die zum Commit gehören, kann einfach dieses Kommando verwendet werden.
user@pc~/gitprojects/buildsystem-cs/source/neutrino-hd [tuxbox-port]$ vi src/neutrino.cpp
<source lang="bash">
user@pc~/gitprojects/buildsystem-cs/source/neutrino-hd [tuxbox-port]$ git commit -a
git commit -a
[tuxbox-port 5756abf] neutrino.cpp: changing debug output to use macro dprintf
</source>
  1 files changed, 2 insertions(+), 2 deletions(-)
Wenn nicht per
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.
<source lang="bash">
user@pc~/gitprojects/buildsystem-cs/source/neutrino-hd [tuxbox-port]$ git format-patch tuxbox-hd/tuxbox-port
git add <Datei1> <Datei2> ...  
0001-neutrino.cpp-changing-debug-output-to-use-macro-dpri.patch
</source>
die relevanten Dateien selktiv hinzufügen und abschließend  
<source lang="bash">
git commit
</source>
aufrufen. Hier im Beispiel eine einfache Veränderung der neutrino.cpp.
 
<source lang="bash">
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(-)
</source>
 
Nun liegen die Veränderungen im lokalen [[Git]] Repo und können mit
<source lang="bash">
git format-patch [BRANCH]  
</source>
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 Patches bzw. Änderungen aus weiteren Commits ausgegegeben werden, die sich zwischen '''tuxbox-hd/tuxbox-port''' und '''origin/master''' ergeben.
 
<source lang="bash">
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
</source>
Das ist eigentlich schon alles. Diese Datei(en) können nun an einen Entwickler geschickt werden.
Das ist eigentlich schon alles. Diese Datei(en) können nun an einen Entwickler geschickt werden.


= einen Patch von einer dritten Person erhalten =
= 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.  
Es ist möglich, das Ihr von einer anderen Person einen Patch erhalten habt und diesen weitergeben wollt. Wenn diese Person nun wiederum den Patch nicht selbst weitergeben wollte, aber trotzdem einverstanden ist, das der Patch weitergegeben 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
<source lang="bash">
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
</source>
 
Danach wie oben schon beschrieben den Patch an einen Developer weiter geben.
Danach wie oben schon beschrieben den Patch an einen Developer weiter geben.

Version vom 19. Juli 2011, 20:20 Uhr

Wer einen Patch bereit stellen möchte, kann mit Git direkt fertige importierbare Patchfiles erstellen. Die nötigen Funktionen werden durch Git direkt ohne Zusatzsoftware zur Verfügung gestellt. Unter CVS oder auch 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.

Dazu kann man wie folgt vorgehen.

Vorbereitung

Sicherstellen das ein gültiger Authorname und eine gültige Emailadresse hinterlegt ist. Wenn nicht, dies global für alle Git Repositories nachholen.

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 mit den eigenen 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ächst einen Commit durchführen. Wenn Ihr wirklich nur die Dateien verändert habt, die zum Commit gehören, kann einfach dieses Kommando verwendet werden.

git commit -a

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 mit

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 Patches bzw. Änderungen aus weiteren Commits 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 weitergeben wollt. Wenn diese Person nun wiederum den Patch nicht selbst weitergeben wollte, aber trotzdem einverstanden ist, das der Patch weitergegeben 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.