Content extract
Source control systems Horváth Ernő, Dr. Pozna Claudiu Radu Verziókezelés A verziókezelő rendszerek angolul revision control, version control, source control. Leggyakrabban a mérnöki tudományokban és a szoftverfejlesztésben használnak verziókezelő rendszereket fejlesztés alatt álló dokumentumok, tervek, forráskódok és egyéb olyan adatok verzióinak kezelésére, amelyeken több ember dolgozik egyidejűleg. Verziókezelő rendszer • Verziókezelő rendszer feladatai: » Projekt módosításainak követése • • • • Könyvtárstruktúra és fájlok változásainak követése. Ki, mikor, mit módosított? Mi volt a projekt állapota egy tetszőleges korábbi időpontban? Módosításhoz tartozó kommentek kezelése. » Kódmegosztás, csoportmunka támogatása • Lock-Modify-Unlock megközelítés • Copy-Modify-Merge megközelítés Csoportmunka támogatás Copy-Modify-Merge • Copy-Modify-Merge megközelítés » Nincs zárolás »
Bárki olvashatja a szerveren tárolt fájlokat » Ha az új verzió feltöltése előtt valaki már módosította a fájlt, akkor a későbbi feltöltő out-of-date hibát kap és fel kell oldani az ütközéseket. » Lock mechanizmus továbbra is megmarad(hat) bináris állományok (kép, hang, stb.) kezelésére • • • • • • Verziókezelő szoftverek tulajdonságai Dokumentumok kezelése » idő és verzió alapján Változások követése » adott fájl több verziója Több szerző összehangolt munkája Konfliktusok elkerülése, feloldása (resolve) Hozzáférések, felhasználók kezelése Verzió összehasonlítás (diff) Népszerű megoldások • 2014-ben a legnépszerűbb ilyen szoftverek: » » » » Git Svn (Subversion) Mercurial Cvs » » » » » » GitHub SourceForge CodePlex Launchpad Assembla Google Code • 2014-ben ezeket hostingoló szolgáltatók: SVN Subversion 7 How to Use Version Control server client checkout (first time)
(do some work, test) check status update (resolve conflicts) commit (do more work, test) send current revision ( n ) any changes since revision n? update your local copy with any changes in the repo. save your changes and log entry Subversion Repository Layout One repository, many projects One project per repository Repository parent dir Root Project 1 Project 1 trunk trunk tags tags branches Project 2 branches Project 2 trunk trunk tags tags branches branches The Work Cycle Submit your changes Create a local copy svn checkout svn update Subversion Repository svn commit 106 100 Resolve conflicts (Merge your changes) Make changes svn diff svn resolved svn add svn move svn delete 105 See what was changed in the repository in the meantime svn status -u Update your local copy svn update URL & protokoll http://myhost.com:port/path/to/repository Opcionális port szám Protokoll: svn svn+ssh http https file Host név , IP cím Repository
127.001 relative path localhost host:8443 SVN alapvető parancsok • import – nem verziózott alkönyvtár verziókezelés alá helyezése. • export – repository részének vagy egészének letöltése verzió információk nélkül. • checkout – Working copy létrehozása (repository részének vagy egészének letöltése verzió információkkal együtt). • update – Working copy frissítése a repository-ból (változások letöltése). (update to revision) • commit – Working copy változásainak feltöltése a repository-ba. SVN tipikus napi munkamenet Munka előtt: update – Working copy frissítése a repository-ból Munka után: commit – Working copy változásainak feltöltése a repository-ba. Csak leforduló kódot commit-oljunk! (nem muszáj hogy végleges legyen) Használjunk tömör, de érthető megjegyzéseket a változások leírására! SVN parancssorból • svn status: A helyi és a repositoryban lévő változatok közötti
különbségek lekérdezése. • svn update: A szerver tartalmát a saját gépre tölteni • svn commit: A saját módosításaink feltöltése a szerverre » message mező • svn add: Új fájlok hozzáadása a repositoryhoz • svn diff: Összevetés előző verziókkal • svn co: checkout: Working copy létrehozása GUI felület SVN-hez TortoiseSVN Diff Fájlok és mappák státusza Zöld » normál státusz Piros ! » a fájlt módosították az utolsó update óta, commitolni(,) kellene Sárga » az update alatti hibára utal Szürke » szerkesztés előtt lock-olni kell Lakat » unlockonli kell, hogy más commitolhasson Piros X » hiányzó vagy már törölt Kék + » hozzáadva (még nincs commitolva) Commit messages Angolul és szakszerű megfogalmazásokkal :) (a kép egy előző évfolyam kommentjeit mutatja, nem a példát) Git 19 • Create a branch • Add commits • Open a Pull Request Git workflow • (Discuss and review your code)
• Deploy • Merge Multiple versions 1. Initial commit 2. Second commit Third commit Fourth commit Merge 21 Bob gets a copy Bob’s commit Centralized VC vs. Distributed VC Central Server Remote Server git git git git Git/Svn pull clone commit -a diff svn svn svn svn update checkout vagy svn co commit diff GitHub 24 • GitHub egy népszerű web alapú Git repository hostoló szolgáltatás ingyenes és fizetős hozzáféréssel. • A jelképe: Octocat. GitHub GitHub a böngészőben GitHub for Windows Saját Windows és OSX klienssel rendelkezik GitHub workflow Add commits CREATE A BRANCH Create a branch in your project where you can safely experiment and make changes. Discuss and review OPEN A PULL REQUEST Use a pull request to get feedback on your changes from people down the hall or ten time zones away. MERGE AND DEPLOY Merge your changes into your master branch and deploy your code. GitHub extension for Visual Studio Team Explorer
Solution Explorer GitHub extension for Visual Studio GitHub advenced search • https://github.com/search/advanced Branches Illustrated master A > git commit –m ‘my first commit’ Branches Illustrated master A B C > git commit (x2) Branches Illustrated master A B C bug123 > git checkout –b bug123 Branches Illustrated master A B C D E bug123 > git commit (x2) Branches Illustrated master A B C D E bug123 > git checkout master Branches Illustrated master A B C D E bug123 > git merge bug123 Branches Illustrated master A B C D > git branch -d bug123 E Branches Illustrated master A B C D E F G bug456 Branches Illustrated master A B C D E F G bug456 > git checkout master Branches Illustrated master A B C D E F G H bug456 > git merge bug456 Branches Illustrated master A B C D E F G > git branch -d bug456 H Branches Illustrated master A B C D E F G
bug456 Branches Illustrated master A B C D E F’ G’ bug456 > git rebase master Branches Illustrated master A B C D E F’ G’ bug456 > git checkout master > git merge bug456 Felhasznált irodalom • • • • • http://en.wikipediaorg/wiki/Revision control http://hu.wikipediaorg/wiki/Verziókezelés James Brucker: Using Subversion Mark Groves: Introducing Git version control http://guides.githubcom/