# Segédlet

## 0. GitSCH

Mutassátok meg neki a [GitSCH](https://git.sch.bme.hu/)-t. Némá', ez olyan mint a [GitLab](https://gitlab.com/)!

### Dolgok felfedezése

Először kattintsanak a jobb felső sarokban a profiljukra, és nézzék meg miket látnak ott.

<div style="text-align:center"><img src="guide/gyakorlat/img/1.png" alt="Jobb felső sarok izé" /></div>

#### Profil

Érdemes nekik megmutatnotok a saját profilotokon, hogy rákattintotok a felhasználónevetekre, és behozza, mennyire voltatok aktívak az elmúlt időben git szerint, személyes projekteket, etc... nekik ez nem biztos hogy annyira szép lesz, hiszen valószínűleg nem használták még.

#### Státusz

0 perces művelet, de tök szórakoztató, állíttatsatok be velük státuszt. Mutassátok meg, hogy emojikat is be lehet állítani, etc... Legyenek kicsit vidámak tőle!

#### Beállítások

Az edit profile és a preferences-t is megmutathatjátok nekik, DE ne ezek beállításával húzzátok el az időtöket.

Esetleg a témát beállíttathatjátok velük, az nem sok idő és nem fáj, cserébe kényelmes.

### SSH kulcs hozzáadása a profilhoz

Ami fontos, legalábbis kényelmes, de nagyon, adjanak hozzá egy ssh-kulcsot a profiljukhoz. Ezt a `preferences/SSH Keys` alatt találják meg.  
Akinek nincs meg teljesen az SSH, és az SSH kulcs fogalma, azt irányítástok át a [linuxos előadás](http://home.sch.bme.hu/~mikewashere/linux/#/) ide [passzoló fejezetéhez](http://home.sch.bme.hu/~mikewashere/linux/#/m%C3%A1sodik%20vide%C3%B3#t%C3%A1voli-hozz%C3%A1f%C3%A9r%C3%A9s-ssh), illetve meséljétek el nekik röviden mi is ez, (hogyan működik) hogyan kell használni.  
Gites előadás [ide kapcsolódó része](http://home.sch.bme.hu/~blintmester/git/#/guide/remote/1_basics).

## 1. új repó

Kérjetek meg valakit (NE TI LEGYETEK!), hogy hozzon létre egy új projektet. Ezen vezessétek végig a csapatot, jó lenne, ha screensharingel menne végig, a többiek is lássák.

### Lépések

Ennek a lépései:
 - nagy kék gomb (new project) névvel
 - bal felső opció (create blank project)
 - töltsétek ki a field-eket
   - projekt név lehet bármit, lehet benne ékezet, szóköz, etc...
   - figyeljék meg, hogy `project slug` hogyan változik a beírt név hatására
   - mondjátok el, hogy a `project slug`-ot is módosíthatják még ilyenkor (később már asszem nem lehet, vagy naaaagyon fájdalmas)
   - meséljétek el a láthatóság fontosságát
     - private: nem látja más, csak te, meg akiket meghívsz, hogy lássák (ÍGY hozzák létre először, később majd fogjuk állítani!)
     - internal: sch domainen belül (akinek van hozzáférése a GitSCH-hoz) mindenki látja
     - public: mindenki látja, Özséb néni is Romániából
   - az `Initialize repository with a README`-t tanulják meg, hogy kényelmes nem bekapcsolni, ekkor a Git* segít a létrejött projek lokális bekonfigurálásában (egész hasznos, mi?)
   - hozzátok létre a projektet

### Tagok hozzáadása

Ahhoz hogy más is hozzáférjen a repohoz, hozzá kell adni a többieket, hiszen private-ként hoztuk létre.  
Tegyük is meg, baloldalt a sávon a Members-re kattintva kapunk egy felületet, ahol ezt megtehetjük.  

Láthatjuk, hogy embereket, valamint csoportokat is hozzá tudunk adni. Ha valaki megkérdezi, mesélhettek a csoportokról is, vagy irányítsátok hozzám.

Kérjétek meg a projekt tulajdonost, hogy vegyen fel Titeket és engem mint owner, hogy tudjunk segíteni ha szükség lenne rá, valamint a többieket, mint developer/maintainer, ezt már döntsék el ők maguk.

A [role-ok](https://git.sch.bme.hu/help/user/permissions)ról itt olvashatnak, azért egész beszédes.

## 2. Klónozzás

Klónozzák le a repót, ehhez segítséget nyújt a GitLab is, valamint itt van egy leírás:

```
git clone git@git.sch.bme.hu:blintmester/projektem.git
cd projektem
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
```

Persze cseréljétek ki a dolgokat az aktuális projektre!

## 3. Pythonos webszerver

Készítsetek el közösen egy basic pythonos webszervert. Segédletnek használhatjátok Lackó [pythonos segédletét](https://home.sch.bme.hu/~rlacko/python3/#/guide/10_exercise#2-%C3%ADrj%C3%A1tok-meg-a-saj%C3%A1t-hanyadikh%C3%A9tvan-apitokat).

Persze ne lemásoljátok, hanem használjátok fel okosan!

Itt egy mintamegoldás:

```python
import flask

app = flask.Flask(__name__)

app.config["DEBUG"] = True

@app.route('/', methods=['GET'])
def home():
    return """
        <html>
            <head>
                <meta charset="utf-8" />
                <title>Gites meme</title>
            </head>
            <body>
                <h1>Hello Git</h1>
                <p>Ez egy basic oldal</p>
            </body>
        </html>
    """
app.run()
```

Fontos, vagy venv-el, vagy lokálisan tegyék fel a flask-et, hogy tudják használni.

Kipróbálni a `python3 git.py`-al tudják, megnézni az eredményt pedig a `http://localhost:5000/`.

## 4. branch-ek

Hozzanak létre saját branch-eket. Ezt a [videó](https://youtu.be/gU0yjbZR8lY)ban és a [jegyzet ](https://home.sch.bme.hu/~blintmester/git)ben is olvashatják, hogy kell.

```shell-session
$ git checkout -b <username vagy amit akartok>
```

## 5. jogok megint

Állítsák be, hogy a repo internal szinten elérhető legyen.

### Feladat

Mindenki készítsen egy nagyon egyszerű html-t a saját branch-én, commitolják, és a legvégén merge-elhetitek.

## 6. Házi feladat

### Alap

Kaptok egy [repo](https://git.sch.bme.hu/KSZKepzes/cicas-kepek)-t, azt el kell forkolni, és saját képet kell feltölteni.

### Expert

Készítsetek pipeline-t a gyakorlat repo-jához, és csináljatok autodeploy-t a linux-os vm-etekre!