# SQ06B
> [color=#47e8a8]
> [name=Lucas]
> [time=Tue, Mar 28, 2023 9:31 AM]
> [name=Lukas]
> [time=Tue, Mar 28, 2023 9:31 AM]
> [hackmd.io/@LucLukWissM324/By6hvMgbn]
## Aufgabe 1.
### Pull-Requests
Pull Requests sind ein zentrales Konzept in der Versionsverwaltung von Code-Repositories wie Git und GitHub. Sie ermöglichen es Entwicklern, Änderungen an einem Code-Repository vorzuschlagen und anderen Entwicklern die Möglichkeit zu geben, diese Änderungen zu überprüfen, zu diskutieren und letztendlich zu genehmigen oder abzulehnen.
<img src="https://i.imgur.com/8nOqKtr.png" style="filter:drop-shadow(0px 0px 5px black); margin:2vh;">
###### Beispiel eines Pull/Merge Request. *Source: Wiki*
### Funktionsweise
Die Funktionsweise von Pull-Requests ist relativ einfach. Wenn ein Entwickler Änderungen an einem Code-Repository vornehmen möchte, erstellt er zunächst einen "Branch", der eine Kopie des Repositorys mit den Änderungen des Entwicklers enthält. Der Entwickler kann dann diese Änderungen auf den neuen Branch hochladen und einen Pull-Request erstellen, um diese Änderungen mit dem ursprünglichen Repository zu integrieren.
### Durchführung
Ein Pull-Request ist im Wesentlichen eine Benachrichtigung an andere Entwickler, dass Änderungen vorgeschlagen wurden und dass diese Änderungen überprüft und diskutiert werden müssen, bevor sie in das Haupt-Repository integriert werden. Andere Entwickler können dann den Pull-Request öffnen, die Änderungen im Detail prüfen und Feedback und Kommentare hinterlassen.
Sobald die Änderungen überprüft und genehmigt wurden, kann der Pull-Request in das Haupt-Repository integriert werden. Wenn es Konflikte oder Bedenken gibt, kann der Pull-Request abgelehnt werden oder es kann weiter diskutiert werden, bis eine Einigung erzielt wird.
## Aufgabe 2.
### Ablauf Pull Request in unserem Projekt
zuerst wird das projekt gepullt:
```jsonld=
git clone https://gitlab.com/thisisvv/m324-todoapp.git
```
Dann in eines der Entwicklungs branches wechseln:
```jsonld=
git checkout backend-BETA
branch 'backend-BETA' set up to track 'origin/backend-BETA'.
Switched to a new branch 'backend-BETA'
```
Dann haben wir eine änderung am Projekt Code vorgenommen und auf den gitlab Beta Branch ge pusht.
```jsonld=
git add .
git commit -m "changes in pom for build process"
git push
```
Auf Gitlab können wir nun einen Merge request erstellen
<img src="https://i.imgur.com/mnEfZ62.png" style="filter:drop-shadow(0px 0px 5px black); margin:2vh;">
<img src="https://i.imgur.com/Kj7nLkw.png" style="filter:drop-shadow(0px 0px 5px black); margin:2vh;">
Der Merge Request kann nun angeschaut und genemigt werden
<img src="https://i.imgur.com/OPQWoLl.png" style="filter:drop-shadow(0px 0px 5px black); margin:2vh;">
Die änderungen am Code sind hier direkt ersichtlich
<img src="https://i.imgur.com/7kXxYAr.png" style="filter:drop-shadow(0px 0px 5px black); margin:2vh;">
Mit "Merge" ausführen!
<img src="https://i.imgur.com/VS8eJW6.png" style="filter:drop-shadow(0px 0px 5px black); margin:2vh;">
CI/CD wurde nun automatisch getriggert:
<img src="https://i.imgur.com/OVmkDs9.png" style="filter:drop-shadow(0px 0px 5px black); margin:2vh;">
## Aufgabe 3.
<img src="https://i.imgur.com/uS1Z7R2.png" style="filter:drop-shadow(0px 0px 5px black); margin:2vh;">
## Aufgabe 4.
Diese Aufgabe wurde bereits im Detail dokumentiert.
## Aufgabe 5.
### Nutzen von Pull-Requests
Pull-Requests sind ein **wichtiger** Bestandteil des Collaborative-Software-Development-Prozesses und haben viele Vorteile:
#### Code-Review:
Code-Änderungen können von anderen Entwicklern überprüft werden, bevor sie zum "Main" Branch gemerged werden. Dies stellt sicher, dass der Code korrekt und gut strukturiert ist. Fehler können dadurch vermieden und die Code-Qualität verbessert werden.
#### Kollaboration:
Erleichtert die Zusammenarbeit von Entwickler. Entwickler können Feedback von anderen Entwicklern einholen und gemeinsam an Code-Änderungen arbeiten.
#### Transparenz:
Bieten ein Möglichkeit, die Änderungen nachzuvollziehen. Jeder Pull-Request zeigt genau an, welche Änderung vorgenommen wurde, wer sie vorgenommen hat und warum sie vorgenommen wurde.
#### Dokumentation:
Bieten eine Möglichkeit, Diskussionen und Entcheidungen im Zusammenhang mit Code-Änderungen zu dokumentieren. Dadurch kann nachvollzogen werden, warum bestimmte Entscheidungen getroffen werden.
#### Kontrolle:
Ermöglichen es, Änderungen an einem Projekt zu kontrollieren und verwalten. Dadurch können Entwickler sicherstellen, dass nur Änderungen in den Hauptbranch übernommen werden, die den Anforderungen entsprechen.
## Aufgabe 6.
### Meinung zu Pull-Requests
Pull-Requests erleichtern unsere Meinung nach die Arbeit, da sie Möglichkeit bieten, Änderungen am Code von anderen Entwicklern überprüfen und feedbacken zu lassen, bevor sie in den "Main" Branch übernommen werden.
Dadurch lassen sich Fehler vermeiden und die Code-Qualität kann verbessert werden. Durch die Dokumentation
von Diskussion und Entscheidungen im Pull-Request können Entwickler später leichter nachvollziehen, warum bestimmte Entscheidungen getroffen wurden.