Iványi László
[email protected]
ARM programozás 1.
Óra Verziókövetés
Szabó Béla
[email protected]
A félév során a következők kerülnek ismertetésre: • Verziókövetés alapjai, valamint a BitBucket rendszer és a SourceTree program. • ARM mikrokontrollerek előnyei és hátrányai, kiválasztásának módja. • Bluetooth 4.0 működési elve, használata. • ST mikrokontrollerek konfigurálása az ST Cube nevű szoftverrel. • A kontrollerek alapszintű programozása a KEIL szoftver segítségével.
Követelmény A félév során a hallgató feladata egy önállóan megírt alkalmazás bemutatása, legkésőbb az utolsó előtti héten. A feladatok leadása a hallgató saját BitBucket tárhelyén keresztül történik. A működő feladatot a hallgató köteles az oktatók valamelyikének személyesen bemutatni a kurzus időpontjában.
A verziókövetés lényege Adott egy cég. A cégen belül rengeteg fejlesztő dolgozik. Az alkalmazottak munkájának a nyomon követésére és dokumentálására, valamint eltárolására létrehozott rendszert nevezzük verzió követő rendszernek. Előnye, ha a fejlesztő vakvágányra futott, a kód visszaállítható egy korábbi még működő képes állapotra, ahonnan újra lehet folytatni a fejlesztést, ezáltal időt, idegeskedést és pénzt spórolva. Hátránya az, hogy ezeknek a rendszereknek meg kell tanulni az elméletét és megfelelően alkalmazni a követendő forrás állományokon.
Verzió követő rendszerek alapvető felépítése Central Version Control System: Egy központi tároló. Egy adott fájlhoz, egyszerre csak egy fejlesztő férhet hozzá vagy többen is hozzáférhetnek, de ők csak a fájlhoz összefésülési jogot kapnak. Distributed Version Control System: Minden felhasználó rendelkezik a távoli tárolóról a saját gépén egy lokális másolattal. Ebből kifolyólag több fejlesztő szerkeszteti egy időben ugyan azt a fájlt. A fejlesztések végén össze kell fűzni a módosított állományokat.
Példa a típusokra Central Version Control System: - SVN (Subversion), (Központosított verzió kezelő rendszer)
- CVS (Concurrent Version System), - TFS (Team Foundation Server)
Distributed Version Control System: - Mercurial (Elosztott verzió kezelő rendszer)
- Git - Bazaar
Git verziókövető rendszer Mi is az a git? Global Information Tracker, vagy az alkotója szerint saját magáról “elnevezett” git (angol szlengben ez a teljesen ignoráns, gyerekes személyt jelenti) vagy esetleg Geek in Training? Konkrét választ erre a kérdésre nem lehet találni, ezért mindenki maga döntse el, melyik a neki szimpatikus megnevezés. Ki volt az a fickó, aki magát git-nek tartotta? Linus Torvalds, a neve hasonlít a Linux-ra. ( Ez nem véletlen, az ő szakdolgozata volt.)
Git verziókövető rendszer A Git a módosított fájlokat nem az eredeti fájlhoz viszonyítja (mint az SVN esetében), hanem snapshot-okat (pillanatnyi állapotokat) hasonlítja össze. Git-ben a projekt snapshot-ok sorozatából áll. A snapshot-okban nem kerül minden fájl újra letárolásra, hanem a nem módosított fájlokra csak hivatkozás (szaggatott keretű) jön létre.
Git verziókövető rendszer A verziókezelői tevékenységek nagyon gyorsak. A központi szerverrel történő hálózati kommunikáció helyett a lokális gépen hajtódnak végre a parancsok, így a fejlesztés offline megy végbe a központi repository megváltoztatása nélkül. Mivel minden egyes fejlesztő lényegében teljes biztonsági másolattal rendelkezik a teljes projektről, ezért a szerver meghibásodásának, a tároló megsérülésének vagy bármilyen más típusú adatvesztésnek a kockázata sokkal kisebb, mint a központosított rendszerek által támasztott ponthozzáférés.
Git verziókövető rendszer A Git repository minden egyes példánya – akár local, akár remote– rendelkezik a projekt teljes történetével, így egy teljes, elszigetelt fejlesztői környezetet biztosít minden fejlesztő számára, hogy szabadon kísérletezzenek új funkciók fejlesztésével mindaddig, amíg egy tiszta, publikálható verziót nem képesek előállítani. A projekt teljes története azt is jelenti, hogy eltérő history-val rendelkezhetnek az egyes fejlesztők. Egy commit létrehozása még nem jelenti a többi fejlesztővel történő szinkronizációt. A Git már egy tökéletes commit-elési, összevonási, összefésülési technikával rendelkezik a fejlesztés különböző sorainak összefűzéséhez.
BitBucket A BitBucket egy web alapú szolgáltatás, amely támogatja a Mercurial és a Git verziókövető rendszereket. A GitHub-bal ellentétben az ingyenes felhasználói fiók is támogatja a privát repository-k létrehozását (míg ez GitHub esetében például az education fiók használatával érhető el), amiknek nincs mennyiségi korlátja. Az ingyenes fiókkal a privát repositoy-khoz azonban csak 4 “munkatársnak” adhatunk jogot a repository modosításához. A BitBucket repository-khoz kapcsolható a SourceTree nevű szoftver, amely nagyban megkönnyíti a verziókövetést, mivel nem konzolon keresztül kell a műveleteket elvégezni, hanem egy GUI-n keresztül. (Ez a lehetőség elérhető a GitHub-nál is.)
A Git-hez tartozó alapfogalmak és alapfunkciók, valamint elhelyezkedésük a SourceTree programban.
Repository (tároló) A repository az a hely (tipikusan egy szerver), ahol az aktuális és a korábbi verziók kerülnek eltárolásra.
Konzolos utasítás: git init
Branch (elágazás) A fejlesztés egy elágazása. Egy projekt létrejöttekor csak a Master branch áll rendelkezésre.
Konzolos utasítás: git branch CodeSigning
Master A repository-ban a fő csapásirányt jelző branch.
Head A legújabb commit-ot jelölő tag.
Origin Az alapértelmezett távoli repository-t hívják így.
Clone Egy repository-t másol a saját számítógépre.
Konzolos utasítás: git clone
=> Távoli repository => Helyi mappa
Push A helyi repository feltöltése.
Konzolos utasítás: git push origin master
Pull A távoli repository letöltése.
Konzolos utasítás: git pull origin master
Commit Változtatások tárolása a helyi repository-ban.
Konzolos utasítás: git commit -m “Ez a commit szövege”
Checkout Másik commit-olási pontra való átállás a helyi repository-ban.
Konzolos utasítás: git checkout
Diff Verziók közötti külnbségeket mutatja meg a helyi repository-ban.
Konzolos utasítás: git diff HEAD helloworld.txt
Merge ág összefésülése az aktuális ággal.
Konzolos utasítás: git merge
Stage CSAK a staged állapotú fájlok kerülnek bele a commit-ba.
Konzolos utasítás: git add sample.html
Tracked és Untracked Tracked a repository-hoz adott követett forrás állomány. Untracked pedig a nem nyomon követett állomány.
Konzolos utasítás: Tracked: git add Untracked: git reset HEAD
Stash Commit-olás nélküli verzió eltárolás, a későbbi folytatáshoz.
Konzolos utasítás: git stash git stash apply
Fetch Letölti távoli branch-et, megfrissíti a repository-t (állományokat), de a lokális brach-et nem módosítja.
Konzolos utasítás: git fetch
Tag Egy commit névvel vagy cimkével való ellátása.
Konzolos utasítás: git tag -a v1.0 -m "Ez a 1.0-ás verzió"
Érdekességek: Csernai Csaba, Verziókövető rendszerek c. szakdolgozata https://dea.lib.unideb.hu/dea/bitstream/handle/2437/5410/Szakdolgozat.pdf
Konzolos alkalmazás esetén a parancsok az alábbi oldalon kipróbálhatók: https://try.github.io/
Az alábbi leírás bővebben tárgyalja a konzolos git használatát: http://www.math.bme.hu/~balazs/git/gitcml.html
Érdekességek: Bitbucket for Git - Source Tree Tutorial https://www.youtube.com/watch?v=BtEvnE79jxY Git Repository (Bitbucket) + SourceTree GUI Tutorial https://www.youtube.com/watch?v=PkVMgh1q33Q Kovács Áron: Git betekintő https://www.youtube.com/watch?v=YkjkVHCF0N0
Forrás: Hugyák Tamás: GIT c. diasora http://www.desoft.hu/downloads/git/diasor/index.html#/