primož gabrijelčič - 17. slon · embarcadero akademija rad studio in nadzor različic urnik...

49
Primož Gabrijelčič [email protected] http://www.thedelphigeek.com http://primoz.gabrijelcic.org

Upload: others

Post on 13-Jun-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

Primož Gabrijelčič

[email protected]

http://www.thedelphigeek.com

http://primoz.gabrijelcic.org

Page 2: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Page 3: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Urnik

09.00 – 10.30 RAD Studio in nadzor različic

10.30 – 11.00 odmor

11.00 – 12.30 Git

Page 4: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

RAD Studio in nadzor različic

Page 5: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Zgodovina

• 2010: „Version Insight“ (Subversion)

• XE7: Git, izboljšana podpora za Subversion

• XE8: Mercurial, izboljšana podpora za Git

• „RAD Studio Version Insight“

• https://sourceforge.net/projects/radstudioverins/

• Uwe Schuster

Page 6: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Nadzor različic v IDE

• Open from Version Control

• Project Manager

• History Manager

Page 7: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Open from Version Control

• Prenese datoteke iz repozitorija (checkout, clone) in jih shrani lokalno

• Git, Mercurial, Subversion

Page 8: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Project Manager

• Osnovni ukazi za vodenje projekta

• Commit, Update

• Show Log (pozor!)

• Clean

• Browse repository

• Switch

• Git, Mercurial: bolj omejen nabor ukazov

Page 9: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

History Manager

• Revert [to revision]

• Diff

• Blame (Annotate)

• Log

• DFM: Samo v tekstovni obliki

Page 10: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Commit

• Diff

• Revert

• Changelists (Svn)

Page 11: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Git

Page 12: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Pro Git

• Scott Chacon and Ben Straub

• https://git-scm.com/book/en/v2

• Pdf, epub, mobi, html

• Creative Commons Attribution Non Commercial Share Alike 3.0

Page 13: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

• Version Control System, VCS

• Revision Control, Source Control

• https://en.wikipedia.org/wiki/Version_control

Sistemi za nazdor različic

Page 14: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

1. Kopija datotečnega sistema

• __history

2. Krajevni VCS

• podatkovna baza sprememb

• RCS, SCCS

3. Centralizirani VCS

• Razvijalec ima kopijo projekta

• CVS, Subversion, Perforce, VisualSourceSafe

4. Distribuirani VCS

• Razvijalec ima kopijo repozitorija

• BitKeeper, Git, Mercurial, Darcs

Ravni sistemov za nadzor različic

Page 15: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Delovni proces

Subversion

• <krajevne spremembe>

• update [merge]

• commit

Git

• <krajevne spremembe>

• add

• commit

• fetch

• merge

• push

Page 16: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Git

• Mini datotečni sistem

• Zaporedje „posnetkov“

• Shranjene so samo spremenjene datoteke

• Skoraj vse operacije se izvajajo na krajevnem repozitoriju

• Kontrolne vsote

• SHA-1

• Ime datoteke v „datotečnem sistemu“ = hash podatkov

• (Skoraj) nobenega brisanja

Page 17: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Stanja datotek

• committed

•modified

• staged

• opcijsko

Source: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics

Page 18: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Konfiguracija

• git config --list

• git config --global core.editor “'C:\Program Files (x86)\PSPadeditor\PSPad.exe'“

• git config --edit --global

• git help config

• c:\Users\<user>\.gitconfig

• LF-delimited

Page 19: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Presledki in vrstice

• git config --global core.autocrlf true

• commit: CRLF -> LF

• checkout: LF -> CRLF

• for Windows-only projects

• git config --global core.autocrlf false

• CRLF stays CRLF

• core.whitespace

Page 20: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Repozitorij

Page 21: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Dve poti do novega repozitorija

1. Nov krajevni repozitorij

• cd project_folder

• git init

• git add files

• git commit –m “začetno stanje“

2. Kopija obstoječega repozitorija

• git clone <url> [folder]

• http://, https://, ssh://, git://

Page 22: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Datoteke

• git status

• git add <mask>

• git diff [--staged]

• git commit [-a] [-m “message”]

• .gitignore

• https://github.com/github/gitignore/blob/master/Delphi.gitignore

Source: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics

Page 23: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Datoteke

• git rm [--cached]

• git mv <from> <to>

• git rm + git add

• git commit

Source: https://git-scm.com/book/en/v2/Getting-Started-Git-Basics

Page 24: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Seznam sprememb

• git log

• git log [-p] [--stat] [--graph]

• git log --oneline --decorate --graph –all

Page 25: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Ups!

• git commit --amend

• AKA Ooops, I forgot that file!

• git reset HEAD <file>

• AKA ‘unstage’

• git config --global alias.unstage “reset HEAD --”

• git commit -- <file>

• revert

Page 26: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Oddaljeni repozitoriji

Page 27: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Remotes

• git clone

• git remote [-v]

• origin = privzeti oddaljeni repozitorij

• normalno stanje: več kot en „remote“

• git remote add <remote_name> <url>

Page 28: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Pull & Push

• git fetch [<remote_name>]

• Prenese podatke, ki še niso shranjeni v krajevnem repozitoriju

• Novi podatki se prenesejo v repozitorij, ne v delovno področje!

• git pull

• fetch + merge

• Za oddaljene veje

• git push [<remote_name>]

Page 29: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Veje

Page 30: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Veja

• Kazalec v graf „commitov“

• Majhna datoteka, vsebuje samo SHA-1

• Izdelava vej je strašno hitra

https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

Page 31: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Delo z vejami

• git init

• git branch <ime_veje>

• git checkout <ime_veje>

• git checkout --b <ime_veje>

• git branch –d <ime_veje>

https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

Page 32: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Spajanje

• git merge <ime_veje>

• git branch --merged

• git branch --no-merged

• Vedno spreminjamo vejo, ki je „checked out“

https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

Page 33: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Reševanje konfliktov

<<<<<<< HEADChanged in the master.=======This is a branch.>>>>>>> branch1

• git mergetool

• git commit

Page 34: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Vrste vej

• Dolgo živeče veje

• master / develop

• feature

• git-flow

• Kratko živeče veje

• eksperimenti

• popravki bugov

Page 35: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Oddaljene veje

• origin/master

• git fetch <remote>

• git push <remote> <branch>

• git config push.default current

• git checkout --b <new_branch>

• git push --origin <new_branch>

• git push

Page 36: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

„Tracking branches“

• git checkout --b <new_branch> <remote>/<remote_branch>

• git checkout --track <remote>/<remote_branch>

• git checkout <remote_branch>

• git branch –u <remote>/<remote_branch>

• git pull

Page 37: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Rebase

• Alternativa za merge

• Vzame spremembe iz ene veje …

• … in jih aplicira na drugo

• git checkout experimental

• git rebase master

Page 38: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

3-smerni rebase

• git rebase [--onto <branch>] <basebr> <topicbr>

• git rebase --onto master server client

Source: https://git-scm.com/book/en/v2/Git-Branching-Rebasing

Page 39: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Delovni proces

Page 40: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

GitFlow

Source: https://raw.githubusercontent.com/Voronenko/gitflow-release/master/images/git-workflow-release-cycle-4maintenance.png

Page 41: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

GitHub Flow

Source: https://guides.github.com/introduction/flow/

Page 42: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Orodja

Page 43: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Odjemalci

• Git

• TortoiseGit

• GitHub Desktop

• GitKraken

Page 44: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Strežniki

• Bonobo Git Server

• GitStack

• Gitwin

• GitHub

• BitBucket

• GitLab

Page 45: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Koristne povezave

Page 46: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

RAD Studio

• https://community.embarcadero.com/blogs/entry/version-control-get-started-with-git-remote-repositories-and-rad-studio-xe8

• http://www.malcolmgroves.com/blog/?p=1820

• http://docwiki.embarcadero.com/RADStudio/Berlin/en/Version_Control_Systems_in_the_IDE

• http://docwiki.embarcadero.com/RADStudio/Berlin/en/TortoiseSVN_Command_Equivalents_in_RAD_Studio

• http://docwiki.embarcadero.com/RADStudio/Berlin/en/Git_Command_Equivalents_in_RAD_Studio

• http://docwiki.embarcadero.com/RADStudio/Berlin/en/Mercurial_Command_Equivalents_in_RAD_Studio

• https://sourceforge.net/projects/radstudioverins/

Page 47: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Git• https://en.wikipedia.org/wiki/Version_control

• https://git-scm.com

• https://github.com

• https://bitbucket.org

• https://about.gitlab.com/

• https://git-for-windows.github.io

• https://git-scm.com/downloads/guis

• https://desktop.github.com

• https://www.gitkraken.com

• https://tortoisegit.org

• https://bonobogitserver.com/

• http://gitstack.com/

• https://itefix.net/gitwin

• https://git-scm.com/book/en/v2

• https://wiert.me/2016/07/14/git-cheat-sheet/

• https://github.com/github/gitignore/blob/master/Delphi.gitignore

Page 48: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Delovni proces

• http://jeffkreeftmeijer.com/2010/why-arent-you-using-git-flow/

• https://yakiloo.com/getting-started-git-flow/

• https://github.com/nvie/gitflow

• https://www.git-tower.com/learn/git/ebook/en/command-line/advanced-topics/git-flow

• http://danielkummer.github.io/git-flow-cheatsheet/

• http://endoflineblog.com/gitflow-considered-harmful

• https://guides.github.com/introduction/flow/

Page 49: Primož Gabrijelčič - 17. slon · Embarcadero Akademija RAD Studio in nadzor različic Urnik 09.00 –10.30 RAD Studio in nadzor različic 10.30 –11.00 odmor 11.00 –12.30 Git

RAD Studio in nadzor različicEmbarcadero Akademija

Vprašanja?