Slide 1

Slide 1 text

GIT VERSIONING FROM PADAWANS TO JEDIS

Slide 2

Slide 2 text

VERSIONING B.C.

Slide 3

Slide 3 text

GIT VERSIONING - FROM PADAWANS TO JEDIS ZIP/FOLDER BASED VERSIONING

Slide 4

Slide 4 text

GIT VERSIONING - FROM PADAWANS TO JEDIS NETWORK SHARED PROJECT FOLDER

Slide 5

Slide 5 text

A.D. VERSIONING

Slide 6

Slide 6 text

GIT VERSIONING - FROM PADAWANS TO JEDIS VERSION CONTROL SYSTEMS

Slide 7

Slide 7 text

WHAT IS VCS?

Slide 8

Slide 8 text

GIT VERSIONING - FROM PADAWANS TO JEDIS VCS - VERSION CONTROL SYSTEM Revision Control, also know as version control and source control, it’s a software to manage different versions in the development of any document. This systems are generally used in the development of softwares to control the version during the software lifetime and keep a history of the modifications made by the development team.

Slide 9

Slide 9 text

GIT VERSIONING - FROM PADAWANS TO JEDIS VCS - VERSION CONTROL SYSTEM - SOME OF THEM ▸ Concurrent Versions System (CVS) ▸ Subversion (SVN) ▸ GIT ▸ BitKeeper ▸ Mercurial ▸ 100’s of others…

Slide 10

Slide 10 text

GIT

Slide 11

Slide 11 text

WHY GIT?

Slide 12

Slide 12 text

GIT VERSIONING - FROM PADAWANS TO JEDIS WHY GIT? ▸ Free and Open Source ▸ Simple usage ▸ Small and Fast ▸ Decentralised and distributed ▸ Excellent branching and merging models ▸ Data Assurance

Slide 13

Slide 13 text

GIT VERSIONING - FROM PADAWANS TO JEDIS WHY GIT? ▸ Designed for little and big projects ▸ Strong Support for non-linear development ▸ GUI Tools

Slide 14

Slide 14 text

HISTORY

Slide 15

Slide 15 text

LINUS TORVALDS CREATED BY

Slide 16

Slide 16 text

THE LINUX KERNEL USED TO MANAGE

Slide 17

Slide 17 text

HTTP, FTP, RSYNC, SSH, GIT FIRST MULTI- PROTOCOL

Slide 18

Slide 18 text

JUNIO HAMANO MAINTAINED BY

Slide 19

Slide 19 text

GIT FOR PADAWANS

Slide 20

Slide 20 text

INSTALLING GIT

Slide 21

Slide 21 text

GIT VERSIONING - FROM PADAWANS TO JEDIS GIT FOR PADAWANS - INSTALLING GIT ▸ Fedora based: sudo yum install git-all ▸ Debian based: sudo apt-get install git-all ▸ OSX: XCode Tools ▸ Windows: Binary package ▸ From Source: PLAY HARD!

Slide 22

Slide 22 text

COMMAND LINE

Slide 23

Slide 23 text

CONFIGURING

Slide 24

Slide 24 text

GIT VERSIONING - FROM PADAWANS TO JEDIS CONFIGURING

Slide 25

Slide 25 text

REPOSITORIES

Slide 26

Slide 26 text

GIT VERSIONING - FROM PADAWANS TO JEDIS REPOSITORIES - CREATING A NEW REPOSITORY

Slide 27

Slide 27 text

GIT VERSIONING - FROM PADAWANS TO JEDIS REPOSITORIES - CLONING AN EXISTING REPOSITORY

Slide 28

Slide 28 text

COMMIT

Slide 29

Slide 29 text

GIT VERSIONING - FROM PADAWANS TO JEDIS COMMIT - ADDING AND COMMIT A NEW FILE

Slide 30

Slide 30 text

LOCAL AND REMOTES

Slide 31

Slide 31 text

GIT VERSIONING - FROM PADAWANS TO JEDIS LOCAL AND REMOTES - ADDING A REMOTE

Slide 32

Slide 32 text

GIT VERSIONING - FROM PADAWANS TO JEDIS LOCAL AND REMOTES - ADDING A REMOTE

Slide 33

Slide 33 text

PULLING AND PUSHING

Slide 34

Slide 34 text

GIT VERSIONING - FROM PADAWANS TO JEDIS PULLING AND PUSHING - PUSHING UPDATES TO REMOTE

Slide 35

Slide 35 text

GIT VERSIONING - FROM PADAWANS TO JEDIS PULLING AND PUSHING - PUSHING UPDATES TO REMOTE

Slide 36

Slide 36 text

BRANCHES

Slide 37

Slide 37 text

GIT VERSIONING - FROM PADAWANS TO JEDIS BRANCHES A branch in a GIT repository it’s a ramification starting from an origin branch, where you can do changes without elsewhere in the development flow.

Slide 38

Slide 38 text

GIT VERSIONING - FROM PADAWANS TO JEDIS BRANCHES - CREATING A NEW BRANCH

Slide 39

Slide 39 text

GIT VERSIONING - FROM PADAWANS TO JEDIS BRANCHES - CREATING A NEW BRANCH

Slide 40

Slide 40 text

LOG

Slide 41

Slide 41 text

GIT VERSIONING - FROM PADAWANS TO JEDIS LOG - GETTING THE PROJECT LOG

Slide 42

Slide 42 text

TOOLS

Slide 43

Slide 43 text

GUI'S

Slide 44

Slide 44 text

GIT VERSIONING - FROM PADAWANS TO JEDIS TOOLS - GUI'S

Slide 45

Slide 45 text

PROJECT HOSTING

Slide 46

Slide 46 text

GIT VERSIONING - FROM PADAWANS TO JEDIS TOOLS - PROJECT HOSTING

Slide 47

Slide 47 text

FROM PADAWANS TO JEDIS

Slide 48

Slide 48 text

STASH

Slide 49

Slide 49 text

GIT VERSIONING - FROM PADAWANS TO JEDIS STASH - SAVING CHANGES WITHOUT COMMIT

Slide 50

Slide 50 text

ADVANCED BRANCHING

Slide 51

Slide 51 text

MERGE AND REBASE

Slide 52

Slide 52 text

GIT VERSIONING - FROM PADAWANS TO JEDIS ADVANCED BRANCHING - MERGE AND REBASE Merge and Rebase are actions performed in GIT repositories to join updates made in a separated branch into another branch.

Slide 53

Slide 53 text

MERGE VS REBASE

Slide 54

Slide 54 text

GIT VERSIONING - FROM PADAWANS TO JEDIS ADVANCED BRANCHING - MERGE VS REBASE ▸ Merge: Applies a update block in a destination branch, generating a merge-commit on the top of the development history of that branch. ▸ Rebase: Reapply commits on top of another branch without generate merge-commits.

Slide 55

Slide 55 text

GIT VERSIONING - FROM PADAWANS TO JEDIS ADVANCED BRANCHING - MERGE ▸ Pros: ▸ Traceability ▸ More secure ▸ Cons: ▸ Dirty development history

Slide 56

Slide 56 text

GIT VERSIONING - FROM PADAWANS TO JEDIS ADVANCED BRANCHING - REBASE ▸ Pros: ▸ Clean development history ▸ Handle just one commit is quite easy ▸ Useful in patches

Slide 57

Slide 57 text

GIT VERSIONING - FROM PADAWANS TO JEDIS ADVANCED BRANCHING - REBASE ▸ Cons: ▸ Dangerous ▸ Don’t recommended to use in pull requests ▸ More work ▸ More conflicts

Slide 58

Slide 58 text

MERGING

Slide 59

Slide 59 text

GIT VERSIONING - FROM PADAWANS TO JEDIS ADVANCED BRANCHING - MERGING

Slide 60

Slide 60 text

VERSIONING YOUR PROJECT

Slide 61

Slide 61 text

SEMANTIC VERSIONING

Slide 62

Slide 62 text

GIT VERSIONING - FROM PADAWANS TO JEDIS VERSIONING YOUR PROJECT - SEMANTIC VERSIONING 2.10.6 MAJOR MINOR PATCH

Slide 63

Slide 63 text

GIT VERSIONING - FROM PADAWANS TO JEDIS VERSIONING YOUR PROJECT - SEMANTIC VERSIONING ▸ Increment: ▸ MAJOR: When you make incompatible API changes ▸ MINOR: When you add functionality in backwards- compatible manner ▸ PATCH: When you make backwards-compatible bug fixes

Slide 64

Slide 64 text

USING TAGS

Slide 65

Slide 65 text

GIT FLOW by Vincent Driessen’s

Slide 66

Slide 66 text

GIT VERSIONING - FROM PADAWANS TO JEDIS GIT FLOW - DECENTRALIZED AND DISTRIBUITED

Slide 67

Slide 67 text

GIT VERSIONING - FROM PADAWANS TO JEDIS GIT FLOW - REMOTE REPOSITORY MODELLING An organised remote repository generally include two branches: develop and master. In the first (develop), we centralise the development history of the software. In the second (master), we have an stable history of our system

Slide 68

Slide 68 text

GIT VERSIONING - FROM PADAWANS TO JEDIS A SUCCESSFUL GIT FLOW MODEL

Slide 69

Slide 69 text

FEATURE DEVELOPMENT GROWING YOUR APPLICATION

Slide 70

Slide 70 text

GIT VERSIONING - FROM PADAWANS TO JEDIS GIT FLOW - FEATURE DEVELOPMENT ▸ Define a feature ▸ Ramified from the development branch ▸ Just one developer or team by feature ▸ Allows Continuous Integration ▸ Must be deleted after finished

Slide 71

Slide 71 text

RELEASE FOR PRODUCTION ARE YOU READY ?

Slide 72

Slide 72 text

GIT VERSIONING - FROM PADAWANS TO JEDIS GIT FLOW - RELEASE FOR PRODUCTION ▸ Ramified from development branch ▸ Release hardening ▸ Minor version increases ▸ Updated the software document and support files

Slide 73

Slide 73 text

GIT VERSIONING - FROM PADAWANS TO JEDIS GIT FLOW - RELEASE FOR PRODUCTION ▸ Merge ▸ Tag ▸ Package ▸ Release

Slide 74

Slide 74 text

PERFORM A HOTFIX SOMETIMES WE HAVE BUGS

Slide 75

Slide 75 text

GIT VERSIONING - FROM PADAWANS TO JEDIS GIT FLOW - PERFORM A HOTFIX ▸ Ramified from the master branch ▸ Fix ▸ Test ▸ Increase patch version ▸ Merge ▸ Publish

Slide 76

Slide 76 text

HOOKS

Slide 77

Slide 77 text

GIT VERSIONING - FROM PADAWANS TO JEDIS HOOKS - COMMITTING-WORKFLOW HOOKS ▸ pre-commit: used to inspect the current snapshot that’s about to be committed ▸ prepare-commit-msg: used to set a default commit message before the editor is fired up ▸ commit-msg: used to validate the commit message or any other thing before allowing a commit to go through ▸ post-commit: used to perform something after the commit completes, generally used for notification or something similar.

Slide 78

Slide 78 text

GIT VERSIONING - FROM PADAWANS TO JEDIS HOOKS - SERVER SIDE HOOKS ▸ pre-receive: it’s fired when the remote receives the push request and it takes a list of references that are being pushed from stdin. ▸ update: it’s fired for each branch the pusher is trying to update, like the pre-receive, but one for each branch. ▸ post-receive: fired after the push is complete, generally used for notification or something similar.

Slide 79

Slide 79 text

CONCLUSION

Slide 80

Slide 80 text

GIT VERSIONING - FROM PADAWANS TO JEDIS THANK YOU ! Lucas Mendes Lead Engineer at @isetbr
 Head of Product at @2X3 [email protected]
 devsdmf.io
 github.com/devsdmf
 about.me/devsdmf
 twitter.com/devsdmf Slides: bit.ly/devsdmf-puc-pad