SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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 & CassandraDataStax Academy
 
Deploy Laravel on Heroku
Deploy Laravel on HerokuDeploy Laravel on Heroku
Deploy Laravel on HerokuEric Johnson
 
Deploy With Confidence
Deploy With ConfidenceDeploy With Confidence
Deploy With ConfidenceAlex Soto
 
Using Docker For Testing Legacy Code
Using Docker For Testing Legacy CodeUsing Docker For Testing Legacy Code
Using Docker For Testing Legacy CodeAlex Soto
 
Testing in the 21st Century
Testing in the 21st CenturyTesting in the 21st Century
Testing in the 21st CenturyAlex 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 2017Matt 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, FourAshley Roach
 
Cutting Code Quickly - LLEWELLYN FALCO
Cutting Code Quickly - LLEWELLYN FALCOCutting Code Quickly - LLEWELLYN FALCO
Cutting Code Quickly - LLEWELLYN FALCOagilemaine
 
WordPress 4.4 and Beyond
WordPress 4.4 and BeyondWordPress 4.4 and Beyond
WordPress 4.4 and BeyondScott Taylor
 
Docker, Continuous Integration, and You
Docker, Continuous Integration, and YouDocker, Continuous Integration, and You
Docker, Continuous Integration, and YouAtlassian
 
Creating a server side web app
Creating a server side web appCreating a server side web app
Creating a server side web appjeremyk23
 
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 2017Matt Raible
 
RxJS - The Basics & The Future
RxJS - The Basics & The FutureRxJS - The Basics & The Future
RxJS - The Basics & The FutureTracy Lee
 
End-to-End Testing with Cypress
End-to-End Testing with CypressEnd-to-End Testing with Cypress
End-to-End Testing with Cypresskitconcept 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 ConcourseChris 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 Hedwigedebill
 
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 pluginJohn Tighe
 

Was ist angesagt? (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
 

Andere mochten auch

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 ManagersPurav 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 EnterpriseLiviu Damian
 
Exploring the GitHub Service Universe
Exploring the GitHub Service UniverseExploring the GitHub Service Universe
Exploring the GitHub Service UniverseBjörn Kimminich
 
Enterprise git - the hard bits
Enterprise git -  the hard bitsEnterprise git -  the hard bits
Enterprise git - the hard bitsMatthew Barr
 
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんGithub Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんTakafumi ONAKA
 

Andere mochten auch (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 じゃなくてもいいじゃん
 

Ähnlich wie 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 2014Pete Cheslock
 
Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023Static Code Analysis PHP[tek] 2023
Static Code Analysis PHP[tek] 2023Scott Keck-Warren
 
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 SelfAll 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 PracticesSingsys 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
 
Openstack contribution process
Openstack contribution processOpenstack contribution process
Openstack contribution processSyed Armani
 
OpenStack Contribution Process
OpenStack Contribution ProcessOpenStack Contribution Process
OpenStack Contribution Processopenstackindia
 
Getting Git Right
Getting Git RightGetting Git Right
Getting Git RightSven Peters
 
Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up LookoutLookout
 
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 GithubJacob Jenkins
 
Code review vs pull request
Code review vs pull requestCode review vs pull request
Code review vs pull requestBryan Liu
 
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 BeyondDaniel Cerecedo
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
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
 
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
 

Kürzlich hochgeladen (20)

Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
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
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
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
 
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
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

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