SlideShare a Scribd company logo
Dev with Github Ent.
Lesson Learned
Hiroshi Wada
10 min talk @ ATP - Jul 9, 2013
Projects and the dev environments
Web app: Ajax, REST, Spring, Puppet, AWS, ...
5-6 ppl, 1 yr
3500+ commits
Forge (git), Jenkins, JIRA, FishEye, and Crucible
Command line app: plain Java, VMware, ...
4 ppl, 4mo
1100+ commits
Github Enterprise, and Jenkins
Our bad agile days
Push commits to master when you like
Add a tag in commit comments to track by JIRA
e.g., "YDR-225 New exception in handler"
Pick up commits and create a review request
Big feature - branch and forget
Problem: hard to review code
Pain of using JIRA, Fisheyes and Crucible
Individual tools are nice - lack of workflow
Heavily depend on manual effort
Forget to write "YDR-XXX"
No force to create a review
We're lazy. This never work.
Problem: commit granularity
One JIRA issue =>
One big commit containing all changes?
or series of small commits?
Easy to review a series of commit
e.g. skip a refactoring making lots changes
But series of commits could be "contaminated"
YDR-X
Refactoring
YDR-X
Add func
Merge
Y and X
YDR-X
Fix a bug
YDR-Y
Change XXX
Problem: Merge hell
Problem: Merge hell
Problem: Merge hell
Problem: Cherry pick?
Hard to find which commits to cherry pick
Which commits addressing what issue?
Commits could be "contaminated"
Cherry pick often did not work
Conflict - mostly
No conflict - Can I trust?
We need to fix it - but w/ little effort
Trunk-based development *
No big branch
Branch-by-issue
Clear isolation of issues
Enterprise Github
Simple workflow by pull request
* paulhammant.com/2013/04/05/what-is-trunk-based-development/
Our current workflow
1. Identify an issue small enough to finish in
minutes to few days by one person
2. Record it and get the issue number
Our current workflow
1. Identify an issue small enough to finish in
minutes to few days by one person
2. Record it and get the issue number
Our current workflow
1. Identify an issue small enough to finish in
minutes to few days by one person
2. Record it and get the issue number
3. Create a branch and push commits
Our current workflow
1. Identify an issue small enough to finish in
minutes to few days by one person
2. Record it and get the issue number
3. Create a branch and push commits
Our current workflow
1. Identify an issue small enough to finish in
minutes to few days by one person
2. Record it and get the issue number
3. Create a branch and push commits
4. Send a pull request to initiate the review
Our current workflow
1. Identify an issue small enough to finish in
minutes to few days by one person
2. Record it and get the issue number
3. Create a branch and push commits
4. Send a pull request
Our current workflow
1. Identify an issue small enough to finish in
minutes to few days by one person
2. Record it and get the issue number
3. Create a branch and push commits
4. Send a pull request to initiate the review
5. Merge
Who resolve conflicts?
Mostly no conflict thanks to short turn-around
Branch owner resolve conflicts by rebase
before sending a pull request
Reviewer can just hit the "merge" button
Reviewer's job
Branch
owner's job
merge commit w/ conflicts merge commit w/o conflicts
Rewrite the history
Ok to rewrite the history in remote (`push -f`)
until sending a pull request - if you work alone
Allow us for working at night/weekend :)
Only adding commits after a pull request
Rebase alters commit ids -> bad
commit id = SHA1(parent commit id, content)
Commits get unreachable so as comments
i.e., no comment before a pull request
After merging (1/3)
Fix issues (if raised) in the topic branch then
merge (pull request) into master again
Mostly happen right after the first merge
No *new* conflict to solve
After merging (2/3)
If Master diverts largely
Merge master to the topic branch, or
Create a new issue & branch
Do same when master diverts while reviewing
(i.e., after a pull request)
After merging (3/3)
Delete the branch after few days
list of merged branches
Tip: Make commit ids the single truth
Puppetize the whole deployment
Get a consistent test env in minutes
Full stack, monitoring, ...
Not the AWS resources yet
Don't rely on other versionings
Int. tests on CI => test scripts
Release workflow => scripts
Other Tips
Command line is your best friend
Everyday git commands are just ~10
Hipchat !
Aggregate all you
need (and not)
Nagios
Github
Nonsense :)
Discussion
autosetuprebase = always
No merge commits within one branch
Show status on console
e.g., github.com/olivierverdier/zsh-git-prompt
*MUST* for those switching branches often
git fetch -p
Remove tracking branches no longer exist

More Related Content

What's hot

Netflix: A State of Xen - Chaos Monkey & Cassandra
Netflix: A State of Xen - Chaos Monkey & CassandraNetflix: A State of Xen - Chaos Monkey & Cassandra
Netflix: A State of Xen - Chaos Monkey & Cassandra
DataStax Academy
 
Deploy Laravel on Heroku
Deploy Laravel on HerokuDeploy Laravel on Heroku
Deploy Laravel on Heroku
Eric Johnson
 
Deploy With Confidence
Deploy With ConfidenceDeploy With Confidence
Deploy With Confidence
Alex Soto
 
Using Docker For Testing Legacy Code
Using Docker For Testing Legacy CodeUsing Docker For Testing Legacy Code
Using Docker For Testing Legacy Code
Alex Soto
 
Testing in the 21st Century
Testing in the 21st CenturyTesting in the 21st Century
Testing in the 21st Century
Alex Soto
 
What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017
Matt Raible
 
One Container, Two Container, Three Containers, Four
One Container, Two Container, Three Containers, FourOne Container, Two Container, Three Containers, Four
One Container, Two Container, Three Containers, Four
Ashley Roach
 
Cutting code quickly
Cutting code quicklyCutting code quickly
Cutting code quickly
Llewellyn Falco
 
Cutting Code Quickly - LLEWELLYN FALCO
Cutting Code Quickly - LLEWELLYN FALCOCutting Code Quickly - LLEWELLYN FALCO
Cutting Code Quickly - LLEWELLYN FALCO
agilemaine
 
WordPress 4.4 and Beyond
WordPress 4.4 and BeyondWordPress 4.4 and Beyond
WordPress 4.4 and Beyond
Scott Taylor
 
Docker, Continuous Integration, and You
Docker, Continuous Integration, and YouDocker, Continuous Integration, and You
Docker, Continuous Integration, and You
Atlassian
 
5 W's of Hookin'
5 W's of Hookin'5 W's of Hookin'
5 W's of Hookin'
Nowell VanHoesen
 
Creating a server side web app
Creating a server side web appCreating a server side web app
Creating a server side web app
jeremyk23
 
Get Hip with Java Hipster - JavaOne 2017
Get Hip with Java Hipster - JavaOne 2017Get Hip with Java Hipster - JavaOne 2017
Get Hip with Java Hipster - JavaOne 2017
Matt Raible
 
RxJS - The Basics & The Future
RxJS - The Basics & The FutureRxJS - The Basics & The Future
RxJS - The Basics & The Future
Tracy Lee
 
MeteorJS Session
MeteorJS SessionMeteorJS Session
MeteorJS Session
Shreyans Gandhi
 
End-to-End Testing with Cypress
End-to-End Testing with CypressEnd-to-End Testing with Cypress
End-to-End Testing with Cypress
kitconcept GmbH
 
Scaling your CI Pipeline with Docker and Concourse
Scaling your CI Pipeline with Docker and ConcourseScaling your CI Pipeline with Docker and Concourse
Scaling your CI Pipeline with Docker and Concourse
Chris Edwards, P.Eng.
 
Austin Elixir: Slack Bots With Hedwig
Austin Elixir: Slack Bots With HedwigAustin Elixir: Slack Bots With Hedwig
Austin Elixir: Slack Bots With Hedwig
edebill
 
How to create your own WordPress plugin
How to create your own WordPress pluginHow to create your own WordPress plugin
How to create your own WordPress plugin
John Tighe
 

What's hot (20)

Netflix: A State of Xen - Chaos Monkey & Cassandra
Netflix: A State of Xen - Chaos Monkey & CassandraNetflix: A State of Xen - Chaos Monkey & Cassandra
Netflix: A State of Xen - Chaos Monkey & Cassandra
 
Deploy Laravel on Heroku
Deploy Laravel on HerokuDeploy Laravel on Heroku
Deploy Laravel on Heroku
 
Deploy With Confidence
Deploy With ConfidenceDeploy With Confidence
Deploy With Confidence
 
Using Docker For Testing Legacy Code
Using Docker For Testing Legacy CodeUsing Docker For Testing Legacy Code
Using Docker For Testing Legacy Code
 
Testing in the 21st Century
Testing in the 21st CenturyTesting in the 21st Century
Testing in the 21st Century
 
What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017What's New in JHipsterLand - DevNexus 2017
What's New in JHipsterLand - DevNexus 2017
 
One Container, Two Container, Three Containers, Four
One Container, Two Container, Three Containers, FourOne Container, Two Container, Three Containers, Four
One Container, Two Container, Three Containers, Four
 
Cutting code quickly
Cutting code quicklyCutting code quickly
Cutting code quickly
 
Cutting Code Quickly - LLEWELLYN FALCO
Cutting Code Quickly - LLEWELLYN FALCOCutting Code Quickly - LLEWELLYN FALCO
Cutting Code Quickly - LLEWELLYN FALCO
 
WordPress 4.4 and Beyond
WordPress 4.4 and BeyondWordPress 4.4 and Beyond
WordPress 4.4 and Beyond
 
Docker, Continuous Integration, and You
Docker, Continuous Integration, and YouDocker, Continuous Integration, and You
Docker, Continuous Integration, and You
 
5 W's of Hookin'
5 W's of Hookin'5 W's of Hookin'
5 W's of Hookin'
 
Creating a server side web app
Creating a server side web appCreating a server side web app
Creating a server side web app
 
Get Hip with Java Hipster - JavaOne 2017
Get Hip with Java Hipster - JavaOne 2017Get Hip with Java Hipster - JavaOne 2017
Get Hip with Java Hipster - JavaOne 2017
 
RxJS - The Basics & The Future
RxJS - The Basics & The FutureRxJS - The Basics & The Future
RxJS - The Basics & The Future
 
MeteorJS Session
MeteorJS SessionMeteorJS Session
MeteorJS Session
 
End-to-End Testing with Cypress
End-to-End Testing with CypressEnd-to-End Testing with Cypress
End-to-End Testing with Cypress
 
Scaling your CI Pipeline with Docker and Concourse
Scaling your CI Pipeline with Docker and ConcourseScaling your CI Pipeline with Docker and Concourse
Scaling your CI Pipeline with Docker and Concourse
 
Austin Elixir: Slack Bots With Hedwig
Austin Elixir: Slack Bots With HedwigAustin Elixir: Slack Bots With Hedwig
Austin Elixir: Slack Bots With Hedwig
 
How to create your own WordPress plugin
How to create your own WordPress pluginHow to create your own WordPress plugin
How to create your own WordPress plugin
 

Viewers also liked

Self Hosted Web-based GIT Repository Managers
Self Hosted Web-based GIT Repository ManagersSelf Hosted Web-based GIT Repository Managers
Self Hosted Web-based GIT Repository Managers
Purav Gandhi
 
Nisha Resume (1)
Nisha Resume (1)Nisha Resume (1)
Nisha Resume (1)
Nisha Dalal
 
Cluj.DevOps Meetup - GitHub Enterprise
Cluj.DevOps Meetup - GitHub EnterpriseCluj.DevOps Meetup - GitHub Enterprise
Cluj.DevOps Meetup - GitHub Enterprise
Liviu Damian
 
Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service Universe
Björn Kimminich
 
Enterprise git - the hard bits
Enterprise git -  the hard bitsEnterprise git -  the hard bits
Enterprise git - the hard bits
Matthew Barr
 
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんGithub Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃん
Takafumi ONAKA
 

Viewers also liked (6)

Self Hosted Web-based GIT Repository Managers
Self Hosted Web-based GIT Repository ManagersSelf Hosted Web-based GIT Repository Managers
Self Hosted Web-based GIT Repository Managers
 
Nisha Resume (1)
Nisha Resume (1)Nisha Resume (1)
Nisha Resume (1)
 
Cluj.DevOps Meetup - GitHub Enterprise
Cluj.DevOps Meetup - GitHub EnterpriseCluj.DevOps Meetup - GitHub Enterprise
Cluj.DevOps Meetup - GitHub Enterprise
 
Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service Universe
 
Enterprise git - the hard bits
Enterprise git -  the hard bitsEnterprise git -  the hard bits
Enterprise git - the hard bits
 
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんGithub Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃん
 

Similar to Dev with github enterprise

Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
hamidsamadi
 
Nikolai Boiko "NodeJS Refactoring: How to kill a Dragon and stay alive"
Nikolai Boiko "NodeJS Refactoring: How to kill a Dragon and stay alive"Nikolai Boiko "NodeJS Refactoring: How to kill a Dragon and stay alive"
Nikolai Boiko "NodeJS Refactoring: How to kill a Dragon and stay alive"
NodeUkraine
 
A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014
Pete Cheslock
 
Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023
Scott Keck-Warren
 
Source Control 101
Source Control 101Source Control 101
Source Control 101
Robert MacLean
 
Writing Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfWriting Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future Self
All Things Open
 
Technical Seminar Series: GIT Pull Requests Best Practices
Technical Seminar Series:  GIT Pull Requests Best PracticesTechnical Seminar Series:  GIT Pull Requests Best Practices
Technical Seminar Series: GIT Pull Requests Best Practices
Singsys Pte Ltd
 
Be a Happier Developer with Git / Productive Team #gettinggitright
Be a Happier Developer with Git / Productive Team #gettinggitright Be a Happier Developer with Git / Productive Team #gettinggitright
Be a Happier Developer with Git / Productive Team #gettinggitright
Shunsuke (Sean) Osawa
 
E caregitpresentation
E caregitpresentationE caregitpresentation
E caregitpresentation
Rakesh Kumar Shardiwal
 
OpenStack Contribution Process
OpenStack Contribution ProcessOpenStack Contribution Process
OpenStack Contribution Process
openstackindia
 
Openstack contribution process
Openstack contribution processOpenstack contribution process
Openstack contribution process
Syed Armani
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
Sven Peters
 
Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up Lookout
Lookout
 
Working with others using git and Github
Working with others using git and GithubWorking with others using git and Github
Working with others using git and Github
Jacob Jenkins
 
SEO for Large Websites
SEO for Large WebsitesSEO for Large Websites
SEO for Large Websites
Dominic Woodman
 
Git best practices 2016
Git best practices 2016Git best practices 2016
Git best practices 2016
Otto Kekäläinen
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull request
Bryan Liu
 
Switching to Git
Switching to GitSwitching to Git
Switching to Git
Stephen Yeargin
 
Git
GitGit
From Legacy to the Cloud and Beyond
From Legacy to the Cloud and BeyondFrom Legacy to the Cloud and Beyond
From Legacy to the Cloud and Beyond
Daniel Cerecedo
 

Similar to Dev with github enterprise (20)

Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
Git workflows á la-carte, Presenation at jdays2013 www.jdays.se by Nicola Pao...
 
Nikolai Boiko "NodeJS Refactoring: How to kill a Dragon and stay alive"
Nikolai Boiko "NodeJS Refactoring: How to kill a Dragon and stay alive"Nikolai Boiko "NodeJS Refactoring: How to kill a Dragon and stay alive"
Nikolai Boiko "NodeJS Refactoring: How to kill a Dragon and stay alive"
 
A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014A Tale of Two Workflows - ChefConf 2014
A Tale of Two Workflows - ChefConf 2014
 
Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023
 
Source Control 101
Source Control 101Source Control 101
Source Control 101
 
Writing Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future SelfWriting Commits for You, Your Friends, and Your Future Self
Writing Commits for You, Your Friends, and Your Future Self
 
Technical Seminar Series: GIT Pull Requests Best Practices
Technical Seminar Series:  GIT Pull Requests Best PracticesTechnical Seminar Series:  GIT Pull Requests Best Practices
Technical Seminar Series: GIT Pull Requests Best Practices
 
Be a Happier Developer with Git / Productive Team #gettinggitright
Be a Happier Developer with Git / Productive Team #gettinggitright Be a Happier Developer with Git / Productive Team #gettinggitright
Be a Happier Developer with Git / Productive Team #gettinggitright
 
E caregitpresentation
E caregitpresentationE caregitpresentation
E caregitpresentation
 
OpenStack Contribution Process
OpenStack Contribution ProcessOpenStack Contribution Process
OpenStack Contribution Process
 
Openstack contribution process
Openstack contribution processOpenstack contribution process
Openstack contribution process
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git Right
 
Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up Lookout
 
Working with others using git and Github
Working with others using git and GithubWorking with others using git and Github
Working with others using git and Github
 
SEO for Large Websites
SEO for Large WebsitesSEO for Large Websites
SEO for Large Websites
 
Git best practices 2016
Git best practices 2016Git best practices 2016
Git best practices 2016
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull request
 
Switching to Git
Switching to GitSwitching to Git
Switching to Git
 
Git
GitGit
Git
 
From Legacy to the Cloud and Beyond
From Legacy to the Cloud and BeyondFrom Legacy to the Cloud and Beyond
From Legacy to the Cloud and Beyond
 

Recently uploaded

HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
alexjohnson7307
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 

Recently uploaded (20)

HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 

Dev with github enterprise

  • 1. Dev with Github Ent. Lesson Learned Hiroshi Wada 10 min talk @ ATP - Jul 9, 2013
  • 2. Projects and the dev environments Web app: Ajax, REST, Spring, Puppet, AWS, ... 5-6 ppl, 1 yr 3500+ commits Forge (git), Jenkins, JIRA, FishEye, and Crucible Command line app: plain Java, VMware, ... 4 ppl, 4mo 1100+ commits Github Enterprise, and Jenkins
  • 3. Our bad agile days Push commits to master when you like Add a tag in commit comments to track by JIRA e.g., "YDR-225 New exception in handler" Pick up commits and create a review request Big feature - branch and forget
  • 4. Problem: hard to review code Pain of using JIRA, Fisheyes and Crucible Individual tools are nice - lack of workflow Heavily depend on manual effort Forget to write "YDR-XXX" No force to create a review We're lazy. This never work.
  • 5. Problem: commit granularity One JIRA issue => One big commit containing all changes? or series of small commits? Easy to review a series of commit e.g. skip a refactoring making lots changes But series of commits could be "contaminated" YDR-X Refactoring YDR-X Add func Merge Y and X YDR-X Fix a bug YDR-Y Change XXX
  • 9. Problem: Cherry pick? Hard to find which commits to cherry pick Which commits addressing what issue? Commits could be "contaminated" Cherry pick often did not work Conflict - mostly No conflict - Can I trust?
  • 10. We need to fix it - but w/ little effort Trunk-based development * No big branch Branch-by-issue Clear isolation of issues Enterprise Github Simple workflow by pull request * paulhammant.com/2013/04/05/what-is-trunk-based-development/
  • 11. Our current workflow 1. Identify an issue small enough to finish in minutes to few days by one person 2. Record it and get the issue number
  • 12. Our current workflow 1. Identify an issue small enough to finish in minutes to few days by one person 2. Record it and get the issue number
  • 13. Our current workflow 1. Identify an issue small enough to finish in minutes to few days by one person 2. Record it and get the issue number 3. Create a branch and push commits
  • 14. Our current workflow 1. Identify an issue small enough to finish in minutes to few days by one person 2. Record it and get the issue number 3. Create a branch and push commits
  • 15. Our current workflow 1. Identify an issue small enough to finish in minutes to few days by one person 2. Record it and get the issue number 3. Create a branch and push commits 4. Send a pull request to initiate the review
  • 16. Our current workflow 1. Identify an issue small enough to finish in minutes to few days by one person 2. Record it and get the issue number 3. Create a branch and push commits 4. Send a pull request
  • 17. Our current workflow 1. Identify an issue small enough to finish in minutes to few days by one person 2. Record it and get the issue number 3. Create a branch and push commits 4. Send a pull request to initiate the review 5. Merge
  • 18. Who resolve conflicts? Mostly no conflict thanks to short turn-around Branch owner resolve conflicts by rebase before sending a pull request Reviewer can just hit the "merge" button Reviewer's job Branch owner's job merge commit w/ conflicts merge commit w/o conflicts
  • 19. Rewrite the history Ok to rewrite the history in remote (`push -f`) until sending a pull request - if you work alone Allow us for working at night/weekend :) Only adding commits after a pull request Rebase alters commit ids -> bad commit id = SHA1(parent commit id, content) Commits get unreachable so as comments i.e., no comment before a pull request
  • 20. After merging (1/3) Fix issues (if raised) in the topic branch then merge (pull request) into master again Mostly happen right after the first merge No *new* conflict to solve
  • 21. After merging (2/3) If Master diverts largely Merge master to the topic branch, or Create a new issue & branch Do same when master diverts while reviewing (i.e., after a pull request)
  • 22. After merging (3/3) Delete the branch after few days list of merged branches
  • 23. Tip: Make commit ids the single truth Puppetize the whole deployment Get a consistent test env in minutes Full stack, monitoring, ... Not the AWS resources yet Don't rely on other versionings Int. tests on CI => test scripts Release workflow => scripts
  • 24. Other Tips Command line is your best friend Everyday git commands are just ~10 Hipchat ! Aggregate all you need (and not) Nagios Github Nonsense :) Discussion
  • 25. autosetuprebase = always No merge commits within one branch Show status on console e.g., github.com/olivierverdier/zsh-git-prompt *MUST* for those switching branches often git fetch -p Remove tracking branches no longer exist