source control systems - széchenyi istván...

46
Source control systems Horváth Ernő, Dr. Pozna Claudiu Radu

Upload: others

Post on 17-Jul-2020

15 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Source control systems

Horváth Ernő, Dr. Pozna Claudiu Radu

Page 2: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 3: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 4: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 5: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 6: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 7: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

SVN

Subversion

7

Page 8: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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)

Page 9: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 10: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 11: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 12: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 13: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 14: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 15: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

TortoiseSVN

GUI felület SVN-hez

15

Page 16: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Diff

16

Page 17: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 18: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Commit messages

18

Angolul és szakszerű megfogalmazásokkal :) (a kép egy előző évfolyam kommentjeit mutatja, nem a példát)

Page 19: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Git

19

Page 20: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Git workflow

• Create a branch

• Add commits

• Open a Pull Request

20

• (Discuss and review your code)

• Deploy

• Merge

Page 21: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Multiple versions

21

1. Initial commit

2. Second commit

Third commit

Bob gets a copy

Fourth commit

Merge

Bob’s commit

Page 22: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Centralized VC vs. Distributed VC

Central ServerRemote Server

Page 23: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Git/Svn

git pull svn update

git clone svn checkout vagy svn co

git commit -a svn commit

git diff svn diff

23

Page 24: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

GitHub

24

Page 25: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 26: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

GitHub a böngészőben

26

Page 27: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

GitHub for Windows

Saját Windows és OSX klienssel rendelkezik

27

Page 28: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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

Page 29: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

GitHub extension for Visual Studio

29

Team Explorer

Solution Explorer

Page 30: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

GitHub extension for Visual Studio

30

Page 31: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

GitHub advenced search

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

31

Page 32: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

A

> git commit –m ‘my first commit’

Page 33: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

> git commit (x2)

A B C

Page 34: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

bug123

master

> git checkout –b bug123

A B C

Page 35: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

> git commit (x2)

A B C

D E

bug123

Page 36: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

> git checkout master

A B C

D E

bug123

Page 37: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

bug123

master

> git merge bug123

A B C D E

Page 38: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

> git branch -d bug123

A B C D E

Page 39: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

A B C D E

F G

bug456

Page 40: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

A B C D E

F G

bug456

> git checkout master

Page 41: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

A B C D E

F G

> git merge bug456

H

bug456

Page 42: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

A B C D E

F G

> git branch -d bug456

H

Page 43: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

A B C D E

F G

bug456

Page 44: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

A B C D E

> git rebase master

F’ G’

bug456

Page 45: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

Branches Illustrated

master

A B C D E

> git checkout master> git merge bug456

F’ G’

bug456

Page 46: Source control systems - Széchenyi István Universityherno/NGB_IN039_1/Source.Control.Systems.pdf»Git »Svn (Subversion) »Mercurial »Cvs •2014-ben ezeket hostingolószolgáltatók:

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