SlideShare une entreprise Scribd logo
1  sur  112
Télécharger pour lire hors ligne
TIM PETTERSEN • SENIOR DEVELOPER • ATLASSIAN • @KANNONBOY
Code review
vs
Pull requests
@kannonboy
Code review at Atlassian
2006
2007
Atlassian acquires
Cenqua, starts using
Crucible @kannonboy
@kannonboy
2006
2007
Atlassian acquires
Cenqua, starts using
Crucible
Atlassian acquires @kannonboy
@kannonboy
2007 Cenqua, starts using
Crucible
2010 Atlassian acquires
Bitbucket
2011 Work starts on “Caviar”
! @kannonboy
@kannonboy
2010 Atlassian acquires
Bitbucket
2011 Work starts on “Caviar”
2012 Stash 1.0 ships
!
@kannonboy
@kannonboy
2011 Work starts on “Caviar”
2012 Stash 1.0 ships
!
Stash 2.0 ships with
pull requests
Unread status
@kannonboy
@kannonboy
2012 Stash 1.0 ships
Stash 2.0 ships with
pull requests
Merge checks
Comment drift
Unread status
Conflict markers
Build status integration @kannonboy
@kannonboy
Stash renamed to
Bitbucket Server2015
Merge checks
Conflict markers
Build status integration
Reviewer suggestions
Branch permissions
Comment likes
Enhanced branch permissions
Iterative review
Merge strategies
Reviewer statuses @kannonboy
@kannonboy
Bitbucket Server2015
Comment likes
Enhanced branch permissions
Iterative review
Merge strategies
Reviewer statuses
Today
@kannonboy
@kannonboy
TYPES OF REVIEW
YOU NEED CODE REVIEW
CODE REVIEW @ ATLASSIAN
TIPS FOR TEAMS
Agenda
Automated tests
@kannonboy
Automated tests
@kannonboy
human judgement needed
?
“what-evs”
bad API decision
O(n!) algorithm
technical debt
Automated tests
@kannonboy
Code
Review
Photo: Yogi (Flickr)
@kannonboy
Better
Code
Shared
Knowledge
Team
Ownership
@kannonboy
G =
1
R+1
Developer guilt
@kannonboy
Team
Ownership
@kannonboy
Team
Ownership
@kannonboy
Better
Code
Shared
Knowledge
Team
Ownership
@kannonboy
Code reviews take
negative time
@kannonboy
Reviews and releases
10
20
30
40
Daily Weekly Monthly Quarterly Yearly
Code Review No Code Review
Source: Atlassian Git Survey 2013
@kannonboy
Types of code review
@kannonboy
Pull requests
Code review
Post-commit review
Pre-commit review
master
for/master
Staging area @kannonboy
Pre-commit review
master
@kannonboy
Pre-commit review
dev $project-dev@example.com
master
maintainer @kannonboy
// flat fees and taxes
final float customsFee = 5.5f;
final float immigrationFee = 7f;
final float federalTransportTax = .025f;
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
fare *=
return fare;
}
AirfareCalculator.java
federalTransportTax;
@kannonboy
// flat fees and taxes
final float customsFee = 5.5f;
final float immigrationFee = 7f;
final float federalTransportTax = .025f;
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
fare *=
return fare;
}
(1 + )
AirfareCalculator.java
federalTransportTax ;
@kannonboy
Pre-commit review
From: Tim Pettersen <tim@atlassian.com>
Date: Mon, 12 Sep 2016 10:24:10 +1000
Subject: [PATCH] Calculate federal transport tax correctly
--- a/com/atlassian/airfare/AirfareCalculator.java
+++ b/com/atlassian/airfare/AirfareCalculator.java
@@ -10,7 +10,7 @@
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
- fare *= federalTransportTax;
+ fare *= (1 + federalTransportTax);
return fare;
}
$ git format-patch HEAD~1 --stdout
@kannonboy
Pre-commit review
dev
maintainer
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
- fare *= federalTransportTax;
+ fare *= (1 + federalTransportTax);
return fare;
}
Subject: [PATCH] Calculate federal transport tax correctly
@kannonboy
>
>
>
>
>
The braces are unnecessary.
Pre-commit review
dev
maintainer
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
- fare *= federalTransportTax;
+ fare *= (1 + federalTransportTax);
return fare;
}
Subject: Re: [PATCH] Calculate federal transport tax correctly
>
>
@kannonboy
>
>
>
>
>
>
>
> >
>
Technically true, but I think they add clarity.
>
>
>
>
>
>
>
The braces are unnecessary.
Pre-commit review
dev
maintainer
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
- fare *= federalTransportTax;
+ fare *= (1 + federalTransportTax);
return fare;
}
Subject: Re: Re: [PATCH] Calculate federal transport tax correctly
@kannonboy
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
> > > > > > > > > > > > > > > > > > > > > > > > > > > > >
Pre-commit review
dev
maintainer
Subject: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:
@kannonboy
Iteration
m
aster
@kannonboy
Pre-commit review
Linus Torvalds*
Module
maintainers
File / driver
maintainers
Contributors
linux-kernel@vger.kernel.org
* Gross oversimplification,
check out: bit.ly/linux-dev
@kannonboy
Pre-commit review
Junio C Hamano*
Contributors
git@vger.kernel.org
* Also an oversimplification
@kannonboy
Pull requests
Post-commit review
Pre-commit review
master
for/master
Staging area
Pre-commit review
Version control agnostic
Difficult to read
High barrier to submit patches
Simple and decentralized
Difficult to iterate
Easy to keep ‘000s of people in the loop
Have to manually merge work
@kannonboy
Post-commit review
@kannonboy
Flexible structure
master
master
patches & untracked files
commits
branches
specific filesmultiple repos
@kannonboy
Iterative review
Branch
diff
Merge
diff
Pull request diffs
@kannonboy
Iterative review
Branch
diff
Post-commit review diffs
Arbitrary commit diffs
@kannonboy
Iterative review in
@kannonboy
Iterative review in
@kannonboy
Not an SCM
SCM host
(e.g. Bitbucket)
Review host
(e.g. Crucible)
Dev team
push & pull
code review
slurp
slurp
slurp
slurp
@kannonboy
Post-commit review
Post-commit review
Supports popular CVCS and DVCS
Have to manually merge work
Flexible review content
Need a separate VCS host
Easy to iterate
Hard to enforce process
@kannonboy
Pull requests
master
for/master
Staging area @kannonboy
Gerrit
and DIFFY
The Kung Foo
Review Cuckoo
@kannonboy
Gerrit is very “Git-y”
$ git config -f ~/gerrit/etc/gerrit.config gerrit.canonicalWebUrl
http://localhost:8080/
@kannonboy
Staging area review
for/master
master
reviewers approved?
verified (build passing)?
Dev team
fetch
push
@kannonboy
From: Gerrit Code Review - A Quick Introduction
@kannonboy
From: Gerrit Code Review - A Quick Introduction
+2
+1
0
-1
-2
@kannonboy
“squash commits first”
$ git push origin HEAD:refs/for/master
# typey type type
$ git commit -am “Review feedback”
Counting objects: 2108776, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (59/59), done.
Writing objects: 100% (86/86), 893.21 KiB, done.
Total 86 (delta 0), reused 0 (delta 0)
! [remote rejected] HEAD -> refs/for/master (squash commits first)
error: failed to push some refs to ‘ssh://...'
@kannonboy
“squash commits first”
for/master
@kannonboy
“squash commits first”
for/master
push
@kannonboy
“squash commits first”
for/master
push
push --force
@kannonboy
“squash commits first”
for/master
push
push --force
push --force
@kannonboy
From: Gerrit Code Review - A Quick Introduction
@kannonboy
Pull requests
Post-commit review
Pre-commit review
master
for/master
Staging area
Staging area review
Sophisticated policy enforcement
Steep learning curve to use & administer
Iteration is a little awkward
FOSS project built in Java, on JGit
Git only
Clean commit history
@kannonboy
Pull requests
it review
@kannonboy
Branches only
master
master
patches & untracked files
commits
branches
specific filesmultiple repos
@kannonboy
Pull requests
review before merging
> Code review
@kannonboy
Pull requests > Code review
Passing build
Reviewer sign-off
Ready for deployment
@kannonboy
Pull requests > Code review
Passing build
Reviewer sign-off
Ready for deployment
@kannonboy
Two developers about to
press the “Merge” button
@kannonboy
Merge Strategies
@kannonboy
@kannonboy
--no-ff
--ff-only
--squash --ff-only
--squash
--ff
@kannonboy
git merge --no-ff
@kannonboy
m
aster
feature/JIRA-123
“Always create a merge commit.”
git merge --no-ff
@kannonboy
m
asterfeature/JIRA-123
“Always create a merge commit.”
git merge --ff
@kannonboy
m
aster
feature/JIRA-123
“Fast forward if you can, otherwise
create a merge commit.”
git merge --ff
@kannonboy
m
aster
feature/JIRA-123
“Fast forward if you can, otherwise
create a merge commit.”
git merge --ff
@kannonboy
m
aster
“Fast forward if you can, otherwise
create a merge commit.”
git merge --ff
@kannonboy
m
aster
“Fast forward if you can, otherwise
create a merge commit.”
git merge --ff-only
@kannonboy
m
aster
feature/JIRA-123
“Only allow fast forwards.”
git merge --ff-only
@kannonboy
m
aster
feature/JIRA-123
“Only allow fast forwards.”
git merge --ff-only
@kannonboy
m
aster
“Only allow fast forwards.”
git merge --ff-only
@kannonboy
m
aster
“Only allow fast forwards.”
git merge --ff-only
@kannonboy
m
aster
“Only allow fast forwards.”
git merge --ff-only
@kannonboy
m
aster
“Only allow fast forwards.”
git merge --squash
@kannonboy
“Combine commits on branch into a new commit
on master.”
m
aster
feature/JIRA-123
git merge --squash
@kannonboy
“Combine commits on branch into a new commit
on master.”
m
aster
git merge --squash 
@kannonboy
“Combine commits on branch into a new commit on master.
Fail if master has any commits that branch doesn’t.”
m
aster
--ff-only
git merge --squash 
@kannonboy
“Combine commits on branch into a new commit on master.
Fail if master has any commits that branch doesn’t.”
m
aster
--ff-only
git merge --squash 
@kannonboy
“Combine commits on branch into a new commit on master.
Fail if master has any commits that branch doesn’t.”
m
aster
--ff-only
Merge Commit Fast forward Squash
Concise history
Lose context of how
features evolved
Which should I use?
“Ugly” history
Full traceability
Hard to screw up
mostly some
--no-ff --ff-only --squash
@kannonboy
No merge commits
Verbose history
Requires rebasing
Pull requests
bit.ly/git-lfs
Sophisticated policy enforcement
Less flexible review content
DVCS had some limitations around file size
Choice of merge strategies
Multiple team members can author code under review
Git & Mercurial
@kannonboy
pull requests
@kannonboy
Tim’s
tips for
top ten
1. One issue, one pull request
= 
@kannonboy
1. One issue, one pull request
# what’s shipping?
$ git branch --merged
# what’s left to ship?
$ git branch --no-merged
@kannonboy
master
IN REVIEW DONEIN PROGRESSOPEN
@kannonboy
Automatic Transitions
feature/JIRA-30
master
IN REVIEW DONEIN PROGRESSOPEN
Branch created!
@kannonboy
Automatic Transitions
feature/JIRA-30
master
IN REVIEW DONEIN PROGRESSOPEN
Pull Request Created!
@kannonboy
Automatic Transitions
feature/JIRA-30
master
IN REVIEW DONEIN PROGRESSOPEN
Pull Request Merged!
@kannonboy
Automatic Transitions
2. Minimum TWO approvals before merge
@kannonboy
2. Minimum TWO approvals before merge
3. Have 1.5x - 2.5x that number reviewers
@kannonboy
Fewer reviewers find more defects
0
7.5
15
22.5
30
1 2 3 4 5 6 7 8 9
Defects/kLoC
Number of Reviewers
@kannonboy
source: bit.ly/review-stats
More reviewers spend less time
0
7
14
21
28
1 2 3 4 5 6
Minutesspent/reviewer
Number of Reviewers
@kannonboy
source: bit.ly/review-stats
4. Use blame to pick reviewers
@kannonboy
4. Use blame to pick reviewers
$ npm install -g git-guilt
# find blame delta for current branch
$ git guilt `git merge-base master HEAD` HEAD
Alice Foo ++++++++++++++++++++++++(239)
Bob Bar ++++++++
Eve Baz -------
Mira Ted ----------------
Bec Opal ------------------------(-159)
@kannonboy
4. Use blame to pick reviewers
bit.ly/suggest-reviewers @kannonboy
4. Use blame to pick reviewers
bit.ly/suggest-reviewers @kannonboy
4. Use blame to pick reviewers
bit.ly/suggest-reviewers @kannonboy
5. @mention specialists
@kannonboy
6. Stuck in review?
Make Tuesday & Thursday inbox zero days
@kannonboy
betterCode;
7. Move comments into code
review
comments
// comments
// in code
@kannonboy
8. Build a team policy, as a team…
…and enforce it! @kannonboy
9. Add screenshots for UI/UX changes
(gifs / videos are even better) @kannonboy
9. Add screenshots for UI/UX changes
(gifs / videos are even better) @kannonboy
Monosnap GIPHY ScreenFlow
@kannonboy
Ask a programmer to review 10
lines of code, they'll find 10 issues.
Ask them to do 500 lines and
they'll say it looks good.
@GIRAYOZIL
“
”
10. Keep it concise
10. Keep it conciseSecondsperline
Lines of Code
1 line per second
100 lines per second
@kannonboy
source: bit.ly/review-stats
Code Review vs. Pull requests
Need to review multiple
repos at once
Not on Git
Heavily iterative workflow
Literally everyone else
Dendrophobia
+
@kannonboy
(Traditional)
@kannonboy
bitbucket.org
Bitbucket
atlassian.com/crucible
Crucible
gerritcodereview.com
Gerrit
Looking
for
more?
Follow me for occasional Git &
Bitbucket trivia

Contenu connexe

Tendances

Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
 
Michelin Starred Cooking with Chef
Michelin Starred Cooking with ChefMichelin Starred Cooking with Chef
Michelin Starred Cooking with ChefJon Cowie
 
Cutting the Kubernetes Monorepo in pieces – never learnt more about git
Cutting the Kubernetes Monorepo in pieces – never learnt more about gitCutting the Kubernetes Monorepo in pieces – never learnt more about git
Cutting the Kubernetes Monorepo in pieces – never learnt more about gitStefan Schimanski
 
Deployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails WorldDeployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails WorldNikhil Mungel
 
Extending Kubernetes – Admission webhooks
Extending Kubernetes – Admission webhooksExtending Kubernetes – Admission webhooks
Extending Kubernetes – Admission webhooksStefan Schimanski
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins DockerAlex Soto
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with AnsibleMartin Etmajer
 
Migrating to a bazel based CI system: 6 learnings
Migrating to a bazel based CI system: 6 learnings Migrating to a bazel based CI system: 6 learnings
Migrating to a bazel based CI system: 6 learnings Or Shachar
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsLee Hanxue
 
Tracking huge files with Git LFS - LinuxCon 2016
Tracking huge files with Git LFS - LinuxCon 2016Tracking huge files with Git LFS - LinuxCon 2016
Tracking huge files with Git LFS - LinuxCon 2016Tim Pettersen
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務Mu Chun Wang
 
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012Patrick McDonnell
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internallySeongJae Park
 
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Lemi Orhan Ergin
 
Portland PUG April 2014: Beaker 101: Acceptance Test Everything
Portland PUG April 2014: Beaker 101: Acceptance Test EverythingPortland PUG April 2014: Beaker 101: Acceptance Test Everything
Portland PUG April 2014: Beaker 101: Acceptance Test EverythingPuppet
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management toolAndrey Smirnov
 
Migrating to a Bazel-based CI System: 6 Learnings - Or Shachar
Migrating to a Bazel-based CI System: 6 Learnings - Or ShacharMigrating to a Bazel-based CI System: 6 Learnings - Or Shachar
Migrating to a Bazel-based CI System: 6 Learnings - Or ShacharWix Engineering
 

Tendances (20)

Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010Matt Gauger - Git & Github web414 December 2010
Matt Gauger - Git & Github web414 December 2010
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
Michelin Starred Cooking with Chef
Michelin Starred Cooking with ChefMichelin Starred Cooking with Chef
Michelin Starred Cooking with Chef
 
Cutting the Kubernetes Monorepo in pieces – never learnt more about git
Cutting the Kubernetes Monorepo in pieces – never learnt more about gitCutting the Kubernetes Monorepo in pieces – never learnt more about git
Cutting the Kubernetes Monorepo in pieces – never learnt more about git
 
Deployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails WorldDeployment Patterns in the Ruby on Rails World
Deployment Patterns in the Ruby on Rails World
 
Extending Kubernetes – Admission webhooks
Extending Kubernetes – Admission webhooksExtending Kubernetes – Admission webhooks
Extending Kubernetes – Admission webhooks
 
Jenkins Docker
Jenkins DockerJenkins Docker
Jenkins Docker
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with Ansible
 
Becoming a Git Master
Becoming a Git MasterBecoming a Git Master
Becoming a Git Master
 
Migrating to a bazel based CI system: 6 learnings
Migrating to a bazel based CI system: 6 learnings Migrating to a bazel based CI system: 6 learnings
Migrating to a bazel based CI system: 6 learnings
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
Tracking huge files with Git LFS - LinuxCon 2016
Tracking huge files with Git LFS - LinuxCon 2016Tracking huge files with Git LFS - LinuxCon 2016
Tracking huge files with Git LFS - LinuxCon 2016
 
手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務手把手教你如何串接 Log 到各種網路服務
手把手教你如何串接 Log 到各種網路服務
 
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012
 
Deep dark-side of git: How git works internally
Deep dark-side of git: How git works internallyDeep dark-side of git: How git works internally
Deep dark-side of git: How git works internally
 
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...
 
Dependency Management With Pinto
Dependency Management With PintoDependency Management With Pinto
Dependency Management With Pinto
 
Portland PUG April 2014: Beaker 101: Acceptance Test Everything
Portland PUG April 2014: Beaker 101: Acceptance Test EverythingPortland PUG April 2014: Beaker 101: Acceptance Test Everything
Portland PUG April 2014: Beaker 101: Acceptance Test Everything
 
aptly: Debian repository management tool
aptly: Debian repository management toolaptly: Debian repository management tool
aptly: Debian repository management tool
 
Migrating to a Bazel-based CI System: 6 Learnings - Or Shachar
Migrating to a Bazel-based CI System: 6 Learnings - Or ShacharMigrating to a Bazel-based CI System: 6 Learnings - Or Shachar
Migrating to a Bazel-based CI System: 6 Learnings - Or Shachar
 

En vedette

Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Junyoung Lee
 
Verifying Microservice Integrations with Contract Testing
Verifying Microservice Integrations with Contract TestingVerifying Microservice Integrations with Contract Testing
Verifying Microservice Integrations with Contract TestingAtlassian
 
Popular Git Workflows You Haven't Heard About
Popular Git Workflows You Haven't Heard AboutPopular Git Workflows You Haven't Heard About
Popular Git Workflows You Haven't Heard AboutAtlassian
 
Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Atlassian
 
Releasing the Monolith On a Daily Basis
Releasing the Monolith On a Daily BasisReleasing the Monolith On a Daily Basis
Releasing the Monolith On a Daily BasisAtlassian
 
Tracking Huge Files with Git LFS
Tracking Huge Files with Git LFSTracking Huge Files with Git LFS
Tracking Huge Files with Git LFSAtlassian
 
Scaling Without Expanding: a DevOps Story
Scaling Without Expanding: a DevOps StoryScaling Without Expanding: a DevOps Story
Scaling Without Expanding: a DevOps StoryAtlassian
 
Bitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your LifeBitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your LifeAtlassian
 
Takeaways From Migrating to Git and Bitbucket Server
Takeaways From Migrating to Git and Bitbucket ServerTakeaways From Migrating to Git and Bitbucket Server
Takeaways From Migrating to Git and Bitbucket ServerAtlassian
 
Continuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesContinuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesAtlassian
 
Scaling Your First 1000 Containers with Docker
Scaling Your First 1000 Containers with DockerScaling Your First 1000 Containers with Docker
Scaling Your First 1000 Containers with DockerAtlassian
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git민태 김
 

En vedette (12)

Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)
 
Verifying Microservice Integrations with Contract Testing
Verifying Microservice Integrations with Contract TestingVerifying Microservice Integrations with Contract Testing
Verifying Microservice Integrations with Contract Testing
 
Popular Git Workflows You Haven't Heard About
Popular Git Workflows You Haven't Heard AboutPopular Git Workflows You Haven't Heard About
Popular Git Workflows You Haven't Heard About
 
Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!Mock Servers - Fake All the Things!
Mock Servers - Fake All the Things!
 
Releasing the Monolith On a Daily Basis
Releasing the Monolith On a Daily BasisReleasing the Monolith On a Daily Basis
Releasing the Monolith On a Daily Basis
 
Tracking Huge Files with Git LFS
Tracking Huge Files with Git LFSTracking Huge Files with Git LFS
Tracking Huge Files with Git LFS
 
Scaling Without Expanding: a DevOps Story
Scaling Without Expanding: a DevOps StoryScaling Without Expanding: a DevOps Story
Scaling Without Expanding: a DevOps Story
 
Bitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your LifeBitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your Life
 
Takeaways From Migrating to Git and Bitbucket Server
Takeaways From Migrating to Git and Bitbucket ServerTakeaways From Migrating to Git and Bitbucket Server
Takeaways From Migrating to Git and Bitbucket Server
 
Continuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesContinuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket Pipelines
 
Scaling Your First 1000 Containers with Docker
Scaling Your First 1000 Containers with DockerScaling Your First 1000 Containers with Docker
Scaling Your First 1000 Containers with Docker
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
 

Similaire à Code reviews vs Pull requests

Code Reviews vs. Pull Requests
Code Reviews vs. Pull RequestsCode Reviews vs. Pull Requests
Code Reviews vs. Pull RequestsAtlassian
 
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Peter Leschev
 
Baremetal deployment scale
Baremetal deployment scaleBaremetal deployment scale
Baremetal deployment scalebaremetal
 
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...Laurent Bernaille
 
Networking in Kubernetes
Networking in KubernetesNetworking in Kubernetes
Networking in KubernetesMinhan Xia
 
KazooCon 2014 - Kazoo Scalability
KazooCon 2014 - Kazoo ScalabilityKazooCon 2014 - Kazoo Scalability
KazooCon 2014 - Kazoo Scalability2600Hz
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes NetworkingCJ Cullen
 
Deploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeDeploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeTwilio Inc
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP applicationJavier López
 
Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019
Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019
Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019confluent
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - DeploymentFabio Akita
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.Javier López
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deploymentbaremetal
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
Enjoy privacy on Gitlab
Enjoy privacy on GitlabEnjoy privacy on Gitlab
Enjoy privacy on GitlabMaxis Kao
 
Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)William Yeh
 
[2C4]Clustered computing with CoreOS, fleet and etcd
[2C4]Clustered computing with CoreOS, fleet and etcd[2C4]Clustered computing with CoreOS, fleet and etcd
[2C4]Clustered computing with CoreOS, fleet and etcdNAVER D2
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4Jim Jagielski
 

Similaire à Code reviews vs Pull requests (20)

Code Reviews vs. Pull Requests
Code Reviews vs. Pull RequestsCode Reviews vs. Pull Requests
Code Reviews vs. Pull Requests
 
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
 
Baremetal deployment scale
Baremetal deployment scaleBaremetal deployment scale
Baremetal deployment scale
 
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...
 
Networking in Kubernetes
Networking in KubernetesNetworking in Kubernetes
Networking in Kubernetes
 
KazooCon 2014 - Kazoo Scalability
KazooCon 2014 - Kazoo ScalabilityKazooCon 2014 - Kazoo Scalability
KazooCon 2014 - Kazoo Scalability
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
 
Deploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeDeploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero Downtime
 
Continous Delivering a PHP application
Continous Delivering a PHP applicationContinous Delivering a PHP application
Continous Delivering a PHP application
 
Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019
Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019
Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - Deployment
 
One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.One commit, one release. Continuously delivering a Symfony project.
One commit, one release. Continuously delivering a Symfony project.
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deployment
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Enjoy privacy on Gitlab
Enjoy privacy on GitlabEnjoy privacy on Gitlab
Enjoy privacy on Gitlab
 
Pinto+Stratopan+Love
Pinto+Stratopan+LovePinto+Stratopan+Love
Pinto+Stratopan+Love
 
Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)Immutable infrastructure:觀念與實作 (建議)
Immutable infrastructure:觀念與實作 (建議)
 
[2C4]Clustered computing with CoreOS, fleet and etcd
[2C4]Clustered computing with CoreOS, fleet and etcd[2C4]Clustered computing with CoreOS, fleet and etcd
[2C4]Clustered computing with CoreOS, fleet and etcd
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4
 

Dernier

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 

Dernier (20)

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 

Code reviews vs Pull requests