Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
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.
2
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
3
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.
4
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)
5
Népszerű megoldások
• 2014-ben a legnépszerűbb ilyen szoftverek:» Git
» Svn (Subversion)
» Mercurial
» Cvs
• 2014-ben ezeket hostingoló szolgáltatók:» GitHub
» SourceForge
» CodePlex
» Launchpad
» Assembla
» Google Code
6
SVN
Subversion
7
How to Use Version Control
checkout (first time)
(do some work, test)
update
commit
(do more work, test)
serverclient
send current revision ( n )
update your local copy with any
changes in the repo.
save your changes and log entry
check statusany changes since revision n?
(resolve conflicts)
tags
branches
trunk
Project 1
Root
Project 2
Subversion Repository Layout
tags
branches
trunk
tags
trunk
Project 1
Repository parent dir
Project 2
tags
trunk
One repository, many projects One project per repository
branches
branches
The Work Cycle
svn checkoutsvn update
Create a local copy
svn addsvn movesvn delete
Make changes
svn status -u
See what was changed in the repository in the meantime
svn update
Update your local copy
svn diffsvn resolved
Resolve conflicts(Merge your changes)
svn commit
Submit your changes
105
100
106SubversionRepository
URL & protokoll
http://myhost.com:port/path/to/repository
Protokoll:
svn
svn+ssh
http
https
file
Host név , IP cím
127.0.0.1
localhost
host:8443
Opcionális
port szám
Repository
relative path
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.
12
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!
13
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
14
TortoiseSVN
GUI felület SVN-hez
15
Diff
16
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)
Fájlok és mappák státusza
Commit messages
18
Angolul és szakszerű megfogalmazásokkal :) (a kép egy előző évfolyam kommentjeit mutatja, nem a példát)
Git
19
Git workflow
• Create a branch
• Add commits
• Open a Pull Request
20
• (Discuss and review your code)
• Deploy
• Merge
Multiple versions
21
1. Initial commit
2. Second commit
Third commit
Bob gets a copy
Fourth commit
Merge
Bob’s commit
Centralized VC vs. Distributed VC
Central ServerRemote Server
Git/Svn
git pull svn update
git clone svn checkout vagy svn co
git commit -a svn commit
git diff svn diff
23
GitHub
24
GitHub
• GitHub egy népszerű
web alapú Git repository
hostoló szolgáltatás
ingyenes és fizetős
hozzáféréssel.
• A jelképe: Octocat.
25
GitHub a böngészőben
26
GitHub for Windows
Saját Windows és OSX klienssel rendelkezik
27
GitHub workflow
28
CREATE A
BRANCH
Create a branch in your
project where you can
safely experiment and
make changes.
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.
Add commits Discuss and review
GitHub extension for Visual Studio
29
Team Explorer
Solution Explorer
GitHub extension for Visual Studio
30
Branches Illustrated
master
A
> git commit –m ‘my first commit’
Branches Illustrated
master
> git commit (x2)
A B C
Branches Illustrated
bug123
master
> git checkout –b bug123
A B C
Branches Illustrated
master
> git commit (x2)
A B C
D E
bug123
Branches Illustrated
master
> git checkout master
A B C
D E
bug123
Branches Illustrated
bug123
master
> git merge bug123
A B C D E
Branches Illustrated
master
> git branch -d bug123
A B C D 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
> git merge bug456
H
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
> git rebase master
F’ G’
bug456
Branches Illustrated
master
A B C D E
> git checkout master> git merge bug456
F’ G’
bug456
Felhasznált irodalom
• http://en.wikipedia.org/wiki/Revision_control
• http://hu.wikipedia.org/wiki/Verziókezelés
• James Brucker: Using Subversion
• Mark Groves: Introducing Git version control
• http://guides.github.com/
46