Explorar el Código

Merge pull request #2 from themultiplexer/hw0

Homework 0 - Pull Request
Manuel Vögele hace 8 años
padre
commit
6060041f5c
Se han modificado 10 ficheros con 190 adiciones y 109 borrados
  1. 2
    0
      .gitignore
  2. 8
    0
      .travis.yml
  3. 0
    108
      OVERVIEW.md
  4. 56
    1
      README.md
  5. BIN
      hw0/.gfx/github-pr.xcf
  6. BIN
      hw0/.gfx/github-pr1.png
  7. BIN
      hw0/.gfx/github-pr2.png
  8. 37
    0
      hw0/README.md
  9. 81
    0
      hw0/gittask0/README.md
  10. 6
    0
      hw0/gittask0/SOLUTION.md

+ 2
- 0
.gitignore Ver fichero

@@ -8,3 +8,5 @@ Cargo.lock
8 8
 
9 9
 # These are backup files generated by rustfmt
10 10
 **/*.rs.bk
11
+
12
+*.swp

+ 8
- 0
.travis.yml Ver fichero

@@ -0,0 +1,8 @@
1
+language: rust
2
+rust: stable
3
+cache: cargo
4
+sudo: false
5
+git:
6
+  depth: 1
7
+script:
8
+  - ci/run-travis.sh

+ 0
- 108
OVERVIEW.md Ver fichero

@@ -2,11 +2,7 @@
2 2
 
3 3
 ## Vorbereitung
4 4
 
5
-### Laborzugang einrichten
6 5
 
7
-1. Beachten Sie die Ankündigungen im Moodle Forum. Dort werden die Termine zur Anmeldung als 2er Gruppe sowie die Freischaltung Ihrer Workstation bekannt gegeben. Beachten Sie bitte unbedingt die Deadlines dazu!
8
-1. Melden Sie sich beim Laborassistenten (Büro F029) zu den im Forum genannten Terminen zum Labor persönlich an. Sie bekommen für das Labor eine virtuelle 'Workstation' zugeteilt.
9
-1. Testen Sie Ihre Anmeldung im Laborraum. Melden Sie sich dazu mit Ihrer Kennung auf der zugeteilten Workstation an.
10 6
 
11 7
 ### Fork des htwg-syslab-bsys GitHub Repository
12 8
 
@@ -24,107 +20,3 @@ Um auf Ihr htwg-syslab-bsys beheimatete Repository für das BSYS Labor zu erhalt
24 20
 1. ***WICHTIG***: Einer(!) in Ihrem 2er Team forkt nun das Projekt, so dass der Fork Ihres Projektes in IHREM Github Account liegt. Mit diesem geforkten Repository werden Sie zunächst arbeiten. Damit der Partner in Ihrem Team auch mit diesem Repository arbeiten kann, müssen Sie ihn in den Einstellungen zu Ihrem Projekt auf github dazu autorisieren.
25 21
     - Führen Sie keine Änderungen auf dem Repository im htwg-syslab-bsys Bereich durch, sondern NUR im geforkten Rep in Ihrem privaten github Account.
26 22
 
27
-### ssh Key erstellen
28
-
29
-Um Ihr git Repository von github bequem auschecken zu können, muss zuvor ein SSH-Key generiert werden. Dieser ssh Key muss PRO Rechner erstellt werden, von welchem Sie auf das Repository zugreifen wollen. Wenn Sie z.B. von einem Notebook und Ihrer zugewiesenen Workstation arbeiten wollen, so müssen Sie für beide Rechner jeweils den ssh Key erstellen und auf github in Ihren Settings den 'public' Teil des jeweiligen Keys hinzufügen.
30
-
31
-Wenn Sie noch keinen ssh Key erstellt haben so ist in [auf Github][git-ssh-key-gen] beschrieben, wie das aus einem Linux System funktioniert. Den Teil mit dem ssh-agent können Sie überspringen. Der erzeugte Public Key muss dann noch zu [github kopiert][git-ssh-key-copy] werden. Danach kann über eine sichere ssh Verbindung der Transfer zwischen Github und dem Rechner stattfinden. Da dieser Transfer für jede Rechnerverbindung benötigt wird, müssen Sie auf jedem verwendeten Rechner einen Schlüssel erstellen.
32
-
33
-
34
-Nachdem Sie erfolgreich eine lokale Arbeitsversion Ihres geforkten Gruppenrepositories (Developer-Repo) erstellt haben, können Sie den Inhalt editieren.
35
-
36
-In diesem Ihrem Repository werden Sie Ihre Lösungen zu den
37
-Homeworks aus dem BSYS Labor sammeln. Dazu wird im weiteren exemplarisch von obiger Gruppe: 'Susi Sorglos' und 'Willi Wacker' ausgegangen.
38
-
39
-Sobald Sie alle Aufgaben eines Aufgabenblattes (homework) bearbeitet haben, erstellen Sie einen sogenannten  *Pull Request* (PR) von Ihrem Branch, den Sie zum Review abgeben wollen.
40
-
41
-Die Lösungen müssen in einer bestimmten Ordnerstruktur liegen, die wie folgt
42
-aussieht:
43
-
44
-```text
45
-...
46
-hw1/
47
-    README.md
48
-    task1/
49
-    task2/
50
-    simu1/
51
-hw2/
52
-    README.md
53
-    task1/
54
-    task2/
55
-    simu1/
56
-...
57
-```
58
-
59
-In den `taskN`-Unterordnern muss Ihre Lösung für die entsprechende Programmieraufgabe
60
-liegen. in den `simuN`-Unterordnern liegen Ihre Antworten zu den Simulationsaufgaben. Im jeweiligen **README.md** der Homeworks (`hwN`) finden Sie dazu die nötigen Informationen und Aufgaben.
61
-
62
-## Neue Aufgabenstellung
63
-
64
-Neue Übungsaufgaben werden in einem [separaten Homework Repository][1] veröffentlicht. Es kann vorkommen, dass mit der Aufgabenstellung schon ein paar Quelldateien vorgegeben werden; diese müssen Sie dann von dem genannten Repository in Ihren Fork kopieren. Beachten Sie bitte, dass die Ordnerstruktur genau den Vorgaben entsprechen muss.
65
-
66
-Auch wird für jede Homework eine Datei unter `files/` bereit gestellt. Diese wird bei den Tests benutzt, um zu überprüfen, ob Sie alle geforderten Dateien erstellt haben und hilft Ihnen bei der Überprüfung der Vollständigkeit Ihrer Lösung.
67
-
68
-Dies geht am besten, indem Sie beide Repositories (Ihren Fork des
69
-Gruppenrepositories *und* [das Aufgaben Repository][1]) in den selben Ordner klonen (sodass sie nebeneinander liegen). Das ganze sieht dann in etwa im Ordner von Susi Sorglos (aus `grp0`) so aus:
70
-
71
-```text
72
-$ git clone git@github.com:SusiSorglos/bsys-ws17-grp0.git
73
-$ git clone https://github.com/htwg-syslab-bsys/bsys-ws17-homework.git
74
-$ ls
75
-bsys-ws17-grp0/         bsys-ws17-homework/
76
-```
77
-
78
-Wenn eine neue Aufgabe veröffentlicht wurde, muss zunächst
79
-`bsys-ws17-homework` aktualisiert werden:
80
-
81
-```text
82
-$ cd bsys-ws17-homework
83
-$ git pull
84
-$ cd ..
85
-```
86
-
87
-Nun kann die Aufgabenstellung (mit Quelldateien) der `N`ten Homework
88
-in Ihren Fork kopiert werden:
89
-
90
-```text
91
-$ cp -r bsys-ws17-homework/hwN bsys-ws17-grp0/
92
-```
93
-
94
-## Abgabe allgemein
95
-
96
-### Travis-CI
97
-
98
-Um das Arbeiten zu erleichtern, ist für alle Lösungsrepositories ein Continuous
99
-Integration Service aufgesetzt worden. Jedes mal, wenn ein Pull Request (PR) geöffnet oder aktualisiert wird, laufen eine Reihe von Tests für Ihre Programmieraufgaben durch, die den Codestil
100
-prüfen, alle Rust Dateien kompilieren und alle Unit-Tests ausführen.
101
-
102
-Jeder PR hat also einen Status: *passed*, *failed* oder *pending*. Ihre PR zum
103
-Einreichen (Deadline) der Aufgaben muss den Status *passed* erreicht
104
-haben, also planen Sie genug Zeit zum Verbessern von kleinen Fehlern ein und öffnen den PR nicht erst kurz vor Schluss.
105
-
106
-### Schritte zum Pull-Request
107
-1. Überprüfen Sie den Inhalt Ihres Repository. Achten Sie darauf, dass alle Dateien und die jeweiligen Versionen der Dateien die Sie abgeben wollen nicht nur lokal in Ihrem Home Verzeichnis liegen sondern auch in Ihrem Repository auf github.
108
-1. Überprüfen Sie die Ausgabe Ihrer Programme. Stimmen die Ausgaben mit den geforderten Ausgaben überein?
109
-1. Lassen Sie alle Tests laufen indem Sie im Wurzelverzeichnes
110
-des Repositories folgenden Befehl ausführen (nur Linux und Verwandte!):
111
-
112
-```text
113
-./ci/run-all.sh
114
-```
115
-
116
-1. Sobald Sie alle Aufgaben bearbeitet haben, und zur Bewertung die Aufgabe abgeben wollen, erstellen Sie einen Branch für den Pull-Request.
117
-1. Wählen Sie dann auf github diesen Branch aus und öffnen Sie einen Pull-Request auf diesen Branch. Vergessen Sie nicht einen Tutor (soweit möglich) als Reviewer einzutragen.
118
-1. Bei Ihrem Pull-Request laufen automatische Tests durch, die Ihr Programm testen. Dies sind nicht alle Tests von `ci/run-all.sh`, daher MÜSSEN Sie unbedingt selbst im lokalen Verzeichnis auf Ihrer Workstation den `ci/run-all.sh` Test ausführen!
119
-1. Falls Ihnen ein Fehler unterlaufen ist, so können Sie auch nach dem Pull-Request noch Änderungen am Code vornehmen. Das sollte jedoch der Ausnahmefall bleiben. Überprüfen Sie daher VOR Ihrem Pull-Request, ob die nötigen Aufgaben bearbeitet wurden und ob die Tests alle durchlaufen.
120
-1. Wenn Sie die für die Homework relevante `files\` Datei in Ihr Repository kopiert haben, so wird beim Durchlaufen aller Tests auch die Existenz der geforderten Dateien in Ihrer Lösung überprüft
121
-
122
->Achtung: Damit das Testen in github nicht zu lange dauert, sind einige sehr lang laufende CI Tests deaktiviert. Bitte aktivieren Sie diese Tests NICHT für travis sondern führen Sie die Tests nur lokal aus. Github Classroom erlaubt nur immer eine laufende Instanz der Travis Tests. Erstellen Sie somit Ihren Pull-Request rechtzeitig, da ansonsten die Deadline aufgrund anderer laufender CI Tests von Ihnen u.U. nicht eingehalten werden kann.
123
-
124
-## gitignore
125
-
126
-Ebenfalls in Ihrem Repository ist bereits eine `.gitignore` Datei im Root Ordner. Damit werden von git gewisse Dateitypen und Directories in Ihren `hwN/` Verzeichnisse ignoriert, so dass Sie diese nicht Ihrem Repository hinzufügen. Achten Sie dennoch drauf, welche Dateien Sie in Ihr Repository hinzufügen, denn in `.gitignore` sind nicht alle Möglichkeiten abgefangen. Fügen Sie mit **git add** immer nur selektiv Dateien hinzu.
127
-
128
-[1]: https://github.com/htwg-syslab-bsys/bsys-ws17-homework.git
129
-[git-ssh-key-gen]: https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/#generating-a-new-ssh-key
130
-[git-ssh-key-copy]: https://help.github.com/articles/adding-a-new-ssh-key-to-your-github-account/

+ 56
- 1
README.md Ver fichero

@@ -1,5 +1,60 @@
1
+# Laborzugang einrichten
2
+
3
+1. Beachten Sie die Ankündigungen im Moodle Forum. Dort werden die Termine zur Anmeldung als 2er Gruppe sowie die Freischaltung Ihrer Workstation bekannt gegeben. Beachten Sie bitte unbedingt die Deadlines dazu!
4
+1. Melden Sie sich beim Laborassistenten (Büro F029) zu den im Forum genannten Terminen zum Labor persönlich an. Sie bekommen für das Labor eine virtuelle 'Workstation' zugeteilt.
5
+1. Testen Sie Ihre Anmeldung im Laborraum. Melden Sie sich dazu mit Ihrer Kennung auf der zugeteilten Workstation an.
6
+1. Lesen Sie die HOWTOS unter [SYSLAB][]
7
+
8
+
1 9
 # Aufgaben zum BSYS Labor
2 10
 
3 11
 In diesem Ordner werden die Aufgaben (Homework,`hw`) veröffentlicht, die bearbeitet werden müssen, um den Schein in BSYS zu bekommen. In der Datei `OVERVIEW.md` in diesem Ordner sind weitere Informationen enthalten.
4 12
 
5
-Eine Homework besteht aus einer oder mehreren Tasks. Sie finden somit die zu einer Homework gehörenden Aufgaben in den `README.md`, Dateien der zughörigen `hwN/taskN/` Ordner. `N` steht als Platzhalter für die entsprechende Homework bzw. Tasknummer.
13
+Eine Homework besteht aus einer oder mehreren Tasks. Sie finden somit die zu einer Homework gehörenden Aufgaben in den `README.md`, Dateien der zughörigen `hwN/taskN/` Ordner.
14
+
15
+> `N` steht als Platzhalter für die entsprechende Homework bzw. Tasknummer.
16
+
17
+## Vorbereitung
18
+Die folgenden Befehle demonstrieren den prinzipiellen technischen Ablauf um die Aufgaben vorzubereiten.
19
+Nach der Vorbereitung haben beide Gruppenmitglieder eine lokale Kopie des Git-Repositories.
20
+
21
+> Die Variable `N` wird im Folgenden verwendet um die Gruppennummer anzugeben.
22
+> In den Beispielbefehlen wird hierfür 99 verwendet, diese ist aber bei jeder Gruppe unterschiedlich!
23
+>
24
+> UserA und UserB beziehen sich jeweils auf die Gruppenmitglieder.
25
+> Wer UserA und UserB ist, ist nicht wichtig, darf aber während des gesamten Ablaufs nicht verändert werden!
26
+
27
+### User A and User B @ Github:
28
+* Visit invitation link and join _grpN_
29
+
30
+## Git and GitHub Preparations
31
+
32
+### User A @ GitHub
33
+* *htwg-syslab-bsys-ws17/bsys-ws17-grpN* -> fork -> *UserA/bsys-ws17-grpN*
34
+* Add _UserB_ as collaborator to *UserA/bsys-ws17-grpN*
35
+
36
+### User A @ Container:
37
+
38
+Zunächst muss ein Verzeichnis angelegt werden in das das Git Repository geklont wird. Der Befehl `mkdir` erstellt ein neues, leeres Verzeichnis. Anschließend muss in das neu erstellte Verzeichnis gewechselt werden.
39
+```bash
40
+mkdir -p ~/src/htwg-syslab-bsys-ws17/
41
+cd ~/src/htwg-syslab-bsys-ws17/
42
+```
43
+
44
+Mit dem Befehl `git clone` kann ein Repository auf den lokalen Rechner (bzw in den Container) heruntergeladen werden.
45
+```bash
46
+git clone git@github.com:UserA/bsys-ws17-grpN
47
+```
48
+
49
+Zuletzt müssen die Repositories *upstream* und *template* noch als zusätzliches Remote registriert werden. Ein Remote ist ein Repository auf einem anderen Computer, von dem Commits heruntergeladen bzw. auf das Commits hochgeladen werden können. [Weitere Informationen zu remotes](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes)
50
+```bash
51
+git remote add template git@github.com:htwg-syslab-bsys-ws17/bsys-ws17-template.git
52
+git remote add upstream git@github.com:htwg-syslab-bsys-ws17/bsys-ws17-grpN.git
53
+```
54
+
55
+### User B @ Container:
56
+
57
+Selbes Vorgehen wie User A im vorherigen Abschnitt
58
+
59
+
60
+[SYSLAB]: https://htwg-syslab.github.io

BIN
hw0/.gfx/github-pr.xcf Ver fichero


BIN
hw0/.gfx/github-pr1.png Ver fichero


BIN
hw0/.gfx/github-pr2.png Ver fichero


+ 37
- 0
hw0/README.md Ver fichero

@@ -0,0 +1,37 @@
1
+# HW0 - Git Übung
2
+In dieser Übung wird der Umgang mit `git` auf der Kommandozeile gelernt.
3
+
4
+## Vorbereitung
5
+Updates des Templates herunterladen und neue Feature-Branches für jeden Benutzer erstellen.
6
+
7
+### User A @ Container:
8
+```bash
9
+cd ~/src/htwg-syslab-bsys-ws17/bsys-ws17-grpN
10
+git fetch --all
11
+git checkout hw0
12
+git push origin hw0
13
+git checkout -b hw0-UserA
14
+git push origin hw0-UserA
15
+```
16
+
17
+### User B @ Container:
18
+```bash
19
+cd ~/src/htwg-syslab-bsys-ws17/bsys-ws17-grpN
20
+```
21
+
22
+Hole die neusten Informationen aller Remotes
23
+```bash
24
+git fetch --all
25
+```
26
+
27
+Verwende *origin/hw0* als Basis für die neue lokale *hw0* Branch
28
+```bash
29
+git checkout origin/hw0
30
+git checkout -b hw0
31
+```
32
+
33
+Zweige von *hw0* ab nach *hw0-UserB* und push nach auf den Fork von UserA (origin)
34
+```bash
35
+git checkout -b hw0-UserB
36
+git push origin hw0-UserB
37
+```

+ 81
- 0
hw0/gittask0/README.md Ver fichero

@@ -0,0 +1,81 @@
1
+# HW0 - gittask0
2
+
3
+## Vorbereitung
4
+
5
+### User A @ Container
6
+```bash
7
+cd ~/src/htwg-syslab-bsys-ws17/bsys-ws17-grpN
8
+git status # verify that the branch is hw0-UserA
9
+```
10
+
11
+### User B @ Container
12
+```bash
13
+cd ~/src/htwg-syslab-bsys-ws17/bsys-ws17-grpN
14
+git status # verify that the branch is hw0-UserB
15
+```
16
+
17
+## Konflikterzeugung
18
+Beide Benutzer verändern auf ihrer lokalen Kopie eine Datei und laden diese Änderung hoch.
19
+Beim zusammenführen fällt der Konflikt dann auf, und muss von einem Benutzer behoben werden.
20
+
21
+### User A @ Container
22
+* Ersetze die beiden Fragezeichen in der Tabelle mit jeweils Namen und Github Benutzernamen.
23
+* Ersetze das N in der Überschrift durch die Gruppennummer
24
+
25
+```bash
26
+git commit -v SOLUTION.md
27
+git push
28
+```
29
+
30
+### User A @ GitHub
31
+* Erstelle einen Pull-Request von _hw0-UserA_ auf _hw0_.
32
+
33
+    ![PR1](../.gfx/github-pr1.png)
34
+
35
+### User B @ Container
36
+* Ersetze die beiden Fragezeichen in der Tabelle mit jeweils Namen und Github Benutzernamen.
37
+* Ersetze das N in der Überschrift durch die Gruppennummer
38
+
39
+```bash
40
+git commit -v SOLUTION.md
41
+git push
42
+```
43
+
44
+### User B @ GitHub
45
+* Bestätige den Pull-Request von User A
46
+* Erstelle einen Pull-Request von _hw0-UserB_ auf _hw0_.
47
+
48
+    ![PR2](../.gfx/github-pr2.png)
49
+* **Konflikt tritt auf!**
50
+
51
+## Konfliktbehandlung
52
+
53
+### User B @ Container
54
+* Bestätige den Pull-Request von User A
55
+* Erstelle einen Pull-Request von _hw0-UserB_ auf _hw0_.
56
+  **Konflikt tritt auf!**
57
+
58
+### User B @ Container
59
+```bash
60
+git checkout hw0
61
+git pull
62
+git checkout hw0-UserB
63
+git merge hw0
64
+# edit SOLUTIONS.md
65
+git commit -v SOLUTIONS.md
66
+git push
67
+```
68
+
69
+### User A @ GitHub
70
+* Bestätige den Pull-Request von User B
71
+
72
+### User A @ Container
73
+```bash
74
+git checkout hw0
75
+git pull
76
+```
77
+
78
+## Abgabe
79
+
80
+### User A @ GitHub
81
+* Öffne Upstream Repository und erstelle Pull-Request von der _hw0_ von UserA's fork auf _master_ Branch des Upstream Repository

+ 6
- 0
hw0/gittask0/SOLUTION.md Ver fichero

@@ -0,0 +1,6 @@
1
+# Gruppe 11
2
+
3
+Name | Github Benutzer
4
+--- | ---
5
+Lorenz Bung | LorenzBung
6
+Joshua Rutschmann | themultiplexer

Loading…
Cancelar
Guardar