Source control systems - Széchenyi István...

Preview:

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

GitHub advenced search

• https://github.com/search/advanced

31

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