SlideShare a Scribd company logo
1 of 29
Download to read offline
San Francisco, USA
Karsten Dambekalns
How Git and Gerrit
make you more productive
Freitag, 10. Juni 11
San Francisco, USA
co-lead of TYPO3 5.0 and FLOW3
34 years old
lives in Lübeck, Germany
1 wife, 3 sons, 1 espresso machine
likes canoeing
Karsten Dambekalns
Freitag, 10. Juni 11
San Francisco, USA
Git
Git is a distributed version control system
•
Freitag, 10. Juni 11
San Francisco, USA
Git
• originally developed by Linus Torvalds
• is a distributed version control system
• every working copy is a complete repository
• very powerful
• can seem more complex than Subversion
• basic operations actually quite simple
Freitag, 10. Juni 11
San Francisco, USA
Git
Clone a repository
$ mkdir FLOW3
$ cd FLOW3
$ git clone --recursive git://git.typo3.org/FLOW3/Distributions/Base.git .
Cloning into ....
remote: Counting objects: 3837, done.
remote: Compressing objects: 100% (2023/2023), done.
remote: Total 3837 (delta 2007), reused 2721 (delta 1465)
Receiving objects: 100% (3837/3837), 3.49 MiB | 28 KiB/s, done.
Resolving deltas: 100% (2007/2007), done.
Freitag, 10. Juni 11
San Francisco, USA
Git
Update from a remote repository
$ git submodule foreach "git checkout master"
-✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-
$ git submodule foreach "git pull --rebase"
Entering 'Build/Common'
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 6f27f1784240b414e966ce0e5a12e23cb2f7ab02.
Entering 'Packages/Application/TYPO3'
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 5187430ee44d579ae2bac825e2a069c4cd3f38a4.
Entering 'Packages/Application/TYPO3CR'
First, rewinding head to replay your work on top of it...
Fast-forwarded master to b1f5331aa51d390fa3d973404f31b9fd773f7059.
Entering 'Packages/Application/Twitter'
Current branch master is up to date.
…
Freitag, 10. Juni 11
San Francisco, USA
Git
Commit to a local repository
• it’s your repository, so you can commit anything, anytime
• until published feel free to change history as needed
$ git commit -a -m 'A useful commit message'
[master (root-commit) 419aaa2] foo
1 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 .userchain
Freitag, 10. Juni 11
San Francisco, USA
Git
Push to a remote repository
• after publishing do not change history anymore
$ git push
Counting objects: 82, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (31/31), done.
Writing objects: 100% (57/57), 6.09 KiB, done.
Total 57 (delta 24), reused 21 (delta 7)
To git@github.com:typo3/gerrit.git
+ 6cd4495...a2bcced production -> production
Freitag, 10. Juni 11
San Francisco, USA
Git
Cool features
• local repository allows commits anytime
• local history can be cleaned up before pushing changes
• branches are local, fast and cheap
• changes can be shared easily
• distinguishes author and committer
• powerful history rewriting
Freitag, 10. Juni 11
San Francisco, USA
Code Reviews
Freitag, 10. Juni 11
San Francisco, USA
Code Reviews
• are a quality assurance tool
• all code contains errors, more or less
• it’s easier to spot them with four, six, eight, … eyes
• a review must be passed for code to be integrated
Freitag, 10. Juni 11
San Francisco, USA
Code Reviews
Code Review
is about the looks
• good variable and function names
• CGL compliance
• reasonable program flow
• clean coding
Can be checked by reading the code, can partly be automated
Freitag, 10. Juni 11
San Francisco, USA
Code Reviews
Functional Review
is about the functionality
• do the unit and functional tests pass?
• does the bugfix fix the bug? the feature work?
• is nothing else broken?
Can be checked by testing the code, can partly be automated
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Gerrit is a code review tool
• developed by Google for Android
• based on Git
• acts as a firewall in front of a Git repository
• is a web-based review tool
• is a SSH server
• is a Git server
• manages Git permissions along the way
• see it at https://review.typo3.org
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Git standalone
Git & Gerrit
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
see user’s changes
unique change id filter by project
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Communication is Key
• inline comments by double clicking in diff view
• per patch set comments
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Functional Tests Made Easy
• ready-to-use commands for getting a change provided by
Gerrit
• choice between checkout and cherry pick
• checkout exactly reproduces what was pushed
• cherry-pick adds the change to your current state
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Functional Tests Made Easy
• after getting the change run tests and/or test manually
• then leave a review in Gerrit
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Functional review
vote here
Code review
vote here
Explain your vote
if needed / helpful
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Contributing a Change
• Git needs to be set up (your name and email must
match the Gerrit user)
• Upload your SSH public key to Gerrit
• Make Git push to Gerrit by default
$ git config --global
url."ssh://review.typo3.org".pushInsteadOf git://git.typo3.org
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Creating the Change-ID
• Gerrit comes with a commit hook to create the ID
• just copy it into every repository
• for submodules use this
$ scp -p -P 29418 review.typo3.org:hooks/commit-msg .git/hooks/
$ git submodule foreach
'scp -p -P 29418 review.typo3.org:hooks/commit-msg .git/hooks/'
Freitag, 10. Juni 11
San Francisco, USA
Gerrit
Prepare & Push the Change
• make your code change
• commit and provide a good commit message
• check your change again
• push to a virtual branch to create a change set
• Gerrit will tell you the URL for the new change
$ git log -p origin/master..HEAD
$ git push origin HEAD:refs/for/master
Freitag, 10. Juni 11
San Francisco, USA
Summary
•Git allows for more efficient work
•Gerrit makes code review comfortable
•central hub for code comments and
change history
•functional tests are easy through
ready-to-use commands
Freitag, 10. Juni 11
San Francisco, USA
Thank You!
• These slides: http://slideshare.net/kfish
• Follow me on twitter: @k_fish
• Give me feedback:
• karsten@typo3.org
• http://joind.in/3550
Freitag, 10. Juni 11

More Related Content

What's hot

Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHubNishan Bose
 
GerritHub.io - present, past, future
GerritHub.io - present, past, futureGerritHub.io - present, past, future
GerritHub.io - present, past, futureLuca Milanesio
 
Introduction to github slideshare
Introduction to github slideshareIntroduction to github slideshare
Introduction to github slideshareRakesh Sukumar
 
Git and Gerrit Code Review - Tech Talk - 2010_09_23
Git and Gerrit Code Review - Tech Talk - 2010_09_23Git and Gerrit Code Review - Tech Talk - 2010_09_23
Git and Gerrit Code Review - Tech Talk - 2010_09_23msohn
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and GithubWycliff1
 
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14msohn
 
Getting Started with GitHub
Getting Started with GitHubGetting Started with GitHub
Getting Started with GitHubMichael Redlich
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewRueful Robin
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab IntroductionKrunal Doshi
 
Github Case Study By Amil Ali
Github Case Study By Amil AliGithub Case Study By Amil Ali
Github Case Study By Amil AliAmilAli1
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHubRick Umali
 
Gitt and Git-flow
Gitt and Git-flowGitt and Git-flow
Gitt and Git-flowMd. Masud
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucketSumin Byeon
 

What's hot (20)

Intro to Git & GitHub
Intro to Git & GitHubIntro to Git & GitHub
Intro to Git & GitHub
 
Introduction to GitHub
Introduction to GitHubIntroduction to GitHub
Introduction to GitHub
 
GerritHub.io - present, past, future
GerritHub.io - present, past, futureGerritHub.io - present, past, future
GerritHub.io - present, past, future
 
Introduction to github slideshare
Introduction to github slideshareIntroduction to github slideshare
Introduction to github slideshare
 
Git and Gerrit Code Review - Tech Talk - 2010_09_23
Git and Gerrit Code Review - Tech Talk - 2010_09_23Git and Gerrit Code Review - Tech Talk - 2010_09_23
Git and Gerrit Code Review - Tech Talk - 2010_09_23
 
Introduction to git and Github
Introduction to git and GithubIntroduction to git and Github
Introduction to git and Github
 
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
Code Review with Git and Gerrit - Devoxx 2011 - Tools in Action - 2011-11-14
 
A prentation on github
A prentation on githubA prentation on github
A prentation on github
 
Getting Started with GitHub
Getting Started with GitHubGetting Started with GitHub
Getting Started with GitHub
 
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overviewGit and GitHub | Concept about Git and GitHub Process | Git Process overview
Git and GitHub | Concept about Git and GitHub Process | Git Process overview
 
Gerrit Workshop
Gerrit WorkshopGerrit Workshop
Gerrit Workshop
 
Git Lab Introduction
Git Lab IntroductionGit Lab Introduction
Git Lab Introduction
 
Github Case Study By Amil Ali
Github Case Study By Amil AliGithub Case Study By Amil Ali
Github Case Study By Amil Ali
 
Github basics
Github basicsGithub basics
Github basics
 
Git and Github workshop
Git and Github workshopGit and Github workshop
Git and Github workshop
 
Git best practices workshop
Git best practices workshopGit best practices workshop
Git best practices workshop
 
Github
GithubGithub
Github
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Gitt and Git-flow
Gitt and Git-flowGitt and Git-flow
Gitt and Git-flow
 
Git with bitbucket
Git with bitbucketGit with bitbucket
Git with bitbucket
 

Similar to How Git and Gerrit make you more productive

Source Code Management with Git
Source Code Management with GitSource Code Management with Git
Source Code Management with GitThings Lab
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash CourseNilay Binjola
 
Git for standalone use
Git for standalone useGit for standalone use
Git for standalone useIkuru Kanuma
 
Learning git
Learning gitLearning git
Learning gitSid Anand
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configurationKishor Kumar
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github Max Claus Nunes
 
Git Workshop : Getting Started
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting StartedWildan Maulana
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITPouriaQashqai1
 
Luis atencio on_git
Luis atencio on_gitLuis atencio on_git
Luis atencio on_gitLuis Atencio
 
Git is a distributed version control system .
Git is a distributed version control system .Git is a distributed version control system .
Git is a distributed version control system .HELLOWorld889594
 
Git, github and the hacktober fest
Git, github and the hacktober festGit, github and the hacktober fest
Git, github and the hacktober festUtkarshRaj83
 

Similar to How Git and Gerrit make you more productive (20)

GitHub Event.pptx
GitHub Event.pptxGitHub Event.pptx
GitHub Event.pptx
 
Source Code Management with Git
Source Code Management with GitSource Code Management with Git
Source Code Management with Git
 
Git - Basic Crash Course
Git - Basic Crash CourseGit - Basic Crash Course
Git - Basic Crash Course
 
Git introduction
Git introductionGit introduction
Git introduction
 
Git for standalone use
Git for standalone useGit for standalone use
Git for standalone use
 
Learning git
Learning gitLearning git
Learning git
 
Git installation and configuration
Git installation and configurationGit installation and configuration
Git installation and configuration
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
Introduction to Git and Github
Introduction to Git and Github Introduction to Git and Github
Introduction to Git and Github
 
GIT-FirstPart.ppt
GIT-FirstPart.pptGIT-FirstPart.ppt
GIT-FirstPart.ppt
 
Git Workshop : Getting Started
Git Workshop : Getting StartedGit Workshop : Getting Started
Git Workshop : Getting Started
 
Git
GitGit
Git
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Git Heaven with Wakanda
Git Heaven with WakandaGit Heaven with Wakanda
Git Heaven with Wakanda
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
 
390a gitintro 12au
390a gitintro 12au390a gitintro 12au
390a gitintro 12au
 
Luis atencio on_git
Luis atencio on_gitLuis atencio on_git
Luis atencio on_git
 
Git 101
Git 101Git 101
Git 101
 
Git is a distributed version control system .
Git is a distributed version control system .Git is a distributed version control system .
Git is a distributed version control system .
 
Git, github and the hacktober fest
Git, github and the hacktober festGit, github and the hacktober fest
Git, github and the hacktober fest
 

More from Karsten Dambekalns

The Perfect Neos Project Setup
The Perfect Neos Project SetupThe Perfect Neos Project Setup
The Perfect Neos Project SetupKarsten Dambekalns
 
Sawubona! Content Dimensions with Neos
Sawubona! Content Dimensions with NeosSawubona! Content Dimensions with Neos
Sawubona! Content Dimensions with NeosKarsten Dambekalns
 
Deploying TYPO3 Neos websites using Surf
Deploying TYPO3 Neos websites using SurfDeploying TYPO3 Neos websites using Surf
Deploying TYPO3 Neos websites using SurfKarsten Dambekalns
 
Profiling TYPO3 Flow Applications
Profiling TYPO3 Flow ApplicationsProfiling TYPO3 Flow Applications
Profiling TYPO3 Flow ApplicationsKarsten Dambekalns
 
Using Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowUsing Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowKarsten Dambekalns
 
The agile future of a ponderous project
The agile future of a ponderous projectThe agile future of a ponderous project
The agile future of a ponderous projectKarsten Dambekalns
 
How Domain-Driven Design helps you to migrate into the future
How Domain-Driven Design helps you to migrate into the futureHow Domain-Driven Design helps you to migrate into the future
How Domain-Driven Design helps you to migrate into the futureKarsten Dambekalns
 
Content Repository, Versioning and Workspaces in TYPO3 Phoenix
Content Repository, Versioning and Workspaces in TYPO3 PhoenixContent Repository, Versioning and Workspaces in TYPO3 Phoenix
Content Repository, Versioning and Workspaces in TYPO3 PhoenixKarsten Dambekalns
 
Transparent Object Persistence (within FLOW3)
Transparent Object Persistence (within FLOW3)Transparent Object Persistence (within FLOW3)
Transparent Object Persistence (within FLOW3)Karsten Dambekalns
 
Transparent Object Persistence with FLOW3
Transparent Object Persistence with FLOW3Transparent Object Persistence with FLOW3
Transparent Object Persistence with FLOW3Karsten Dambekalns
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPKarsten Dambekalns
 
Knowledge Management in der TYPO3 Community
Knowledge Management in der TYPO3 CommunityKnowledge Management in der TYPO3 Community
Knowledge Management in der TYPO3 CommunityKarsten Dambekalns
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPKarsten Dambekalns
 
A Content Repository for TYPO3 5.0
A Content Repository for TYPO3 5.0A Content Repository for TYPO3 5.0
A Content Repository for TYPO3 5.0Karsten Dambekalns
 

More from Karsten Dambekalns (20)

The Perfect Neos Project Setup
The Perfect Neos Project SetupThe Perfect Neos Project Setup
The Perfect Neos Project Setup
 
Sawubona! Content Dimensions with Neos
Sawubona! Content Dimensions with NeosSawubona! Content Dimensions with Neos
Sawubona! Content Dimensions with Neos
 
Deploying TYPO3 Neos websites using Surf
Deploying TYPO3 Neos websites using SurfDeploying TYPO3 Neos websites using Surf
Deploying TYPO3 Neos websites using Surf
 
Profiling TYPO3 Flow Applications
Profiling TYPO3 Flow ApplicationsProfiling TYPO3 Flow Applications
Profiling TYPO3 Flow Applications
 
Using Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 FlowUsing Document Databases with TYPO3 Flow
Using Document Databases with TYPO3 Flow
 
i18n and L10n in TYPO3 Flow
i18n and L10n in TYPO3 Flowi18n and L10n in TYPO3 Flow
i18n and L10n in TYPO3 Flow
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Doctrine in FLOW3
Doctrine in FLOW3Doctrine in FLOW3
Doctrine in FLOW3
 
The agile future of a ponderous project
The agile future of a ponderous projectThe agile future of a ponderous project
The agile future of a ponderous project
 
How Domain-Driven Design helps you to migrate into the future
How Domain-Driven Design helps you to migrate into the futureHow Domain-Driven Design helps you to migrate into the future
How Domain-Driven Design helps you to migrate into the future
 
Content Repository, Versioning and Workspaces in TYPO3 Phoenix
Content Repository, Versioning and Workspaces in TYPO3 PhoenixContent Repository, Versioning and Workspaces in TYPO3 Phoenix
Content Repository, Versioning and Workspaces in TYPO3 Phoenix
 
Transparent Object Persistence (within FLOW3)
Transparent Object Persistence (within FLOW3)Transparent Object Persistence (within FLOW3)
Transparent Object Persistence (within FLOW3)
 
JavaScript for PHP Developers
JavaScript for PHP DevelopersJavaScript for PHP Developers
JavaScript for PHP Developers
 
Transparent Object Persistence with FLOW3
Transparent Object Persistence with FLOW3Transparent Object Persistence with FLOW3
Transparent Object Persistence with FLOW3
 
TDD (with FLOW3)
TDD (with FLOW3)TDD (with FLOW3)
TDD (with FLOW3)
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHP
 
Knowledge Management in der TYPO3 Community
Knowledge Management in der TYPO3 CommunityKnowledge Management in der TYPO3 Community
Knowledge Management in der TYPO3 Community
 
Unicode & PHP6
Unicode & PHP6Unicode & PHP6
Unicode & PHP6
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHP
 
A Content Repository for TYPO3 5.0
A Content Repository for TYPO3 5.0A Content Repository for TYPO3 5.0
A Content Repository for TYPO3 5.0
 

Recently uploaded

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Recently uploaded (20)

Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

How Git and Gerrit make you more productive

  • 1. San Francisco, USA Karsten Dambekalns How Git and Gerrit make you more productive Freitag, 10. Juni 11
  • 2. San Francisco, USA co-lead of TYPO3 5.0 and FLOW3 34 years old lives in Lübeck, Germany 1 wife, 3 sons, 1 espresso machine likes canoeing Karsten Dambekalns Freitag, 10. Juni 11
  • 3. San Francisco, USA Git Git is a distributed version control system • Freitag, 10. Juni 11
  • 4. San Francisco, USA Git • originally developed by Linus Torvalds • is a distributed version control system • every working copy is a complete repository • very powerful • can seem more complex than Subversion • basic operations actually quite simple Freitag, 10. Juni 11
  • 5. San Francisco, USA Git Clone a repository $ mkdir FLOW3 $ cd FLOW3 $ git clone --recursive git://git.typo3.org/FLOW3/Distributions/Base.git . Cloning into .... remote: Counting objects: 3837, done. remote: Compressing objects: 100% (2023/2023), done. remote: Total 3837 (delta 2007), reused 2721 (delta 1465) Receiving objects: 100% (3837/3837), 3.49 MiB | 28 KiB/s, done. Resolving deltas: 100% (2007/2007), done. Freitag, 10. Juni 11
  • 6. San Francisco, USA Git Update from a remote repository $ git submodule foreach "git checkout master" -✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂-----✂- $ git submodule foreach "git pull --rebase" Entering 'Build/Common' First, rewinding head to replay your work on top of it... Fast-forwarded master to 6f27f1784240b414e966ce0e5a12e23cb2f7ab02. Entering 'Packages/Application/TYPO3' First, rewinding head to replay your work on top of it... Fast-forwarded master to 5187430ee44d579ae2bac825e2a069c4cd3f38a4. Entering 'Packages/Application/TYPO3CR' First, rewinding head to replay your work on top of it... Fast-forwarded master to b1f5331aa51d390fa3d973404f31b9fd773f7059. Entering 'Packages/Application/Twitter' Current branch master is up to date. … Freitag, 10. Juni 11
  • 7. San Francisco, USA Git Commit to a local repository • it’s your repository, so you can commit anything, anytime • until published feel free to change history as needed $ git commit -a -m 'A useful commit message' [master (root-commit) 419aaa2] foo 1 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .userchain Freitag, 10. Juni 11
  • 8. San Francisco, USA Git Push to a remote repository • after publishing do not change history anymore $ git push Counting objects: 82, done. Delta compression using up to 2 threads. Compressing objects: 100% (31/31), done. Writing objects: 100% (57/57), 6.09 KiB, done. Total 57 (delta 24), reused 21 (delta 7) To git@github.com:typo3/gerrit.git + 6cd4495...a2bcced production -> production Freitag, 10. Juni 11
  • 9. San Francisco, USA Git Cool features • local repository allows commits anytime • local history can be cleaned up before pushing changes • branches are local, fast and cheap • changes can be shared easily • distinguishes author and committer • powerful history rewriting Freitag, 10. Juni 11
  • 10. San Francisco, USA Code Reviews Freitag, 10. Juni 11
  • 11. San Francisco, USA Code Reviews • are a quality assurance tool • all code contains errors, more or less • it’s easier to spot them with four, six, eight, … eyes • a review must be passed for code to be integrated Freitag, 10. Juni 11
  • 12. San Francisco, USA Code Reviews Code Review is about the looks • good variable and function names • CGL compliance • reasonable program flow • clean coding Can be checked by reading the code, can partly be automated Freitag, 10. Juni 11
  • 13. San Francisco, USA Code Reviews Functional Review is about the functionality • do the unit and functional tests pass? • does the bugfix fix the bug? the feature work? • is nothing else broken? Can be checked by testing the code, can partly be automated Freitag, 10. Juni 11
  • 14. San Francisco, USA Gerrit Gerrit is a code review tool • developed by Google for Android • based on Git • acts as a firewall in front of a Git repository • is a web-based review tool • is a SSH server • is a Git server • manages Git permissions along the way • see it at https://review.typo3.org Freitag, 10. Juni 11
  • 15. San Francisco, USA Gerrit Git standalone Git & Gerrit Freitag, 10. Juni 11
  • 17. San Francisco, USA Gerrit see user’s changes unique change id filter by project Freitag, 10. Juni 11
  • 21. San Francisco, USA Gerrit Communication is Key • inline comments by double clicking in diff view • per patch set comments Freitag, 10. Juni 11
  • 22. San Francisco, USA Gerrit Functional Tests Made Easy • ready-to-use commands for getting a change provided by Gerrit • choice between checkout and cherry pick • checkout exactly reproduces what was pushed • cherry-pick adds the change to your current state Freitag, 10. Juni 11
  • 23. San Francisco, USA Gerrit Functional Tests Made Easy • after getting the change run tests and/or test manually • then leave a review in Gerrit Freitag, 10. Juni 11
  • 24. San Francisco, USA Gerrit Functional review vote here Code review vote here Explain your vote if needed / helpful Freitag, 10. Juni 11
  • 25. San Francisco, USA Gerrit Contributing a Change • Git needs to be set up (your name and email must match the Gerrit user) • Upload your SSH public key to Gerrit • Make Git push to Gerrit by default $ git config --global url."ssh://review.typo3.org".pushInsteadOf git://git.typo3.org Freitag, 10. Juni 11
  • 26. San Francisco, USA Gerrit Creating the Change-ID • Gerrit comes with a commit hook to create the ID • just copy it into every repository • for submodules use this $ scp -p -P 29418 review.typo3.org:hooks/commit-msg .git/hooks/ $ git submodule foreach 'scp -p -P 29418 review.typo3.org:hooks/commit-msg .git/hooks/' Freitag, 10. Juni 11
  • 27. San Francisco, USA Gerrit Prepare & Push the Change • make your code change • commit and provide a good commit message • check your change again • push to a virtual branch to create a change set • Gerrit will tell you the URL for the new change $ git log -p origin/master..HEAD $ git push origin HEAD:refs/for/master Freitag, 10. Juni 11
  • 28. San Francisco, USA Summary •Git allows for more efficient work •Gerrit makes code review comfortable •central hub for code comments and change history •functional tests are easy through ready-to-use commands Freitag, 10. Juni 11
  • 29. San Francisco, USA Thank You! • These slides: http://slideshare.net/kfish • Follow me on twitter: @k_fish • Give me feedback: • karsten@typo3.org • http://joind.in/3550 Freitag, 10. Juni 11