SlideShare a Scribd company logo
1 of 33
Download to read offline
Commit Messages
Good Practices
by
Tarin Gamberini
www.taringamberini.com
CC BY-NC-SA 3.0
Abstract
An extremely little set of rules to write
good commit messages.
History (how code changes over time)
become a very useful tool if associated with
good commit messages.
These slides would make developers more
aware about how good commit messages
could improve their work.
Usually do not write
commit messages
I have said to my cat

that some developers

usually do not write

commit messages
My cat could not belive it ...
Usually
Do No t write
commit
Messages
?!?
Commit Messages
Why?

Commit Messages

Why?
Any software project is a

collaborative project
Any software project has

at least two developers ...

Commit Messages

Why?
… the

original developer

Commit Messages

Why?

... the

original developer

few months later
Because when some
poor maintainer is

hunting a bug

and finds that it was
added in revision xyz,
he will want to know ...

Commit Messages

Why?
…

what revision xyz

was supposed to do

Commit Messages

Why?
Because when some
requirement can be

implemented
several ways

in

the
responsible developer
will write, in revision
xyz ...
Commit Messages

Why?
…

why revision xyz was

implemented in that way

Commit Messages

Why?
Because when the boss

wants to know why
a functionality was
added, and the developer finds
that happened in revision
xyz, the developer will
want to know ...
Commit Messages

Why?
…

why revision xyz

was added

Commit Messages

Why?
Commit Messages
How?

Commit Messages

hOW?
The following hints are

based on experience
code development,
bug troubleshooting and
code review across a number
doing

of projects using GIT

Examination of other projects
Such as the Kernel, CoreUtils,
GNULIB and more suggested
they all follow a fairly

common practice
Commit Messages

hOW?
The first line
[

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

Commit Messages

hOW?
The first line
Imperative

[

!!!

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

Commit Messages

hOW?
The first line
Imperative
Should be
limited to
50 chars

[

!!!

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

50
Commit Messages

hOW?
The first line
Imperative
Should be
limited to
50 chars
Should
not end
with a period
Commit Messages

hOW?

[

!!!

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

50
The second line
[

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

Commit Messages

hOW?
The second line
Should be
blank
[

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

Commit Messages

hOW?
The second line
Should be
blank
[

Further
[
paragraphs
came after a
blank line

Commit Messages

hOW?

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657
Subsequential lines

[

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

Commit Messages

hOW?
Subsequential lines
Should be
limited to
72 chars

[

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

72
Commit Messages

hOW?
Subsequential lines
Should be
limited to
72 chars
Detailed
description of
the change

Commit Messages

hOW?

[

Switch libvirt get_cpu_info method over to use config APIs

l
na
i
rig lem
O b
pro

hy
W y
wH Y
wh

s
on
i
tat y
i
i m f an
l I

The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.
Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

72
External references
Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.

[

Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

Commit Messages

hOW?
External references
Do not assume
availability
of external
resources

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.

[

Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657

Commit Messages

hOW?
External references
Do not assume
availability
of external
resources
Bug tracking
integration

Commit Messages

hOW?

Switch libvirt get_cpu_info method over to use config APIs
The get_cpu_info method in the libvirt driver currently uses XPath
queries to extract information from the capabilities XML document.
Switch this over to use the new config class LibvirtConfigCaps. Also
provide a test case to validate the data being returned.

[

Closes-Bug: #1003373
Implements: blueprint libvirt-xml-cpu-model
Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657
Usually write
commit messages
I have said to my cat

that now those developers
are getting used to writing

amazing commit messages
My cat was astonished ...
Amazing
commit messages
Bibliography
Why should I write a commit message?
http://programmers.stackexchange.com/questions/52267/why-should-i-write-a-commit-mess
age
GIT Commit Good Practice
https://wiki.openstack.org/wiki/GitCommitMessages
A Note About Git Commit Messages
http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
Best Practices for Version Control
http://blog.looplabel.net/2008/07/28/best-practices-for-version-control/
On commit messages
http://who-t.blogspot.de/2009/12/on-commit-messages.html
Subversion Best Practices
http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html
Redmine - Administration Guide - Referencing issues in commit messages
http://www.redmine.org/projects/redmine/wiki/RedmineSettings#Referencing-issues-in-com
mit-messages
Is Multiple-Column Online Text Better? It Depends!
http://psychology.wichita.edu/surl/usabilitynews/72/columns.asp
Images attribution
Slide 4
“frightened cat” from Simon Video at
http://www.simonvideo.com/iphone-ipod-touch/how-to-downgrade-your-iphone-os-4-0-bet
a-3g-on-a-mac/
Slide 7
“the original developer” from High Cats Wallpapers Quality at
http://daveandmonicamunson.blogspot.it/2012/04/high-cats-wallpapers-quality.html
“the original developer few month later” from Fun and Fitness at Fifty at
http://fitnessandfunatfifty.wordpress.com/2012/12/07/where-the-heck-did-i-hide-those-presen
ts/forgetful-cat/
Slide 9
“hunting a bug” from Movie Posters – feedio.net at
http://img.thesun.co.uk/multimedia/archive/01249/Monkey-massaging-c_1249605a.jpg
Slide 11
“orange cat” from Fanpop at
http://www.fanpop.com/clubs/think-different/images/31463891/title/orange-cat-photo
Images attribution
Slide 13
“the boss wants to know” from HD Wallpapers, Images and Photos at
http://hdwallpaperen.com/wp-content/uploads/2013/09/Funny-Baby-And-Cat-HD-Wallpaper.
jpg
Slide 15
“git logo” from SILICON ANGLE at
http://siliconangle.com/blog/2012/07/09/social-network-for-developers-github-raises-monst
er-series-a-round-funding-100m/
Slide 30
“astonished cat” from Can it be Saturday Now at
http://canitbesaturdaynow.com/images/fpics/3244/1264885670882__large.jpg

More Related Content

What's hot

Lab3 advanced port scanning 30 oct 21
Lab3 advanced port scanning 30 oct 21Lab3 advanced port scanning 30 oct 21
Lab3 advanced port scanning 30 oct 21
Hussain111321
 
MySQL Performance schema missing_manual_flossuk
MySQL Performance schema missing_manual_flossukMySQL Performance schema missing_manual_flossuk
MySQL Performance schema missing_manual_flossuk
Valeriy Kravchuk
 

What's hot (20)

Lab3 advanced port scanning 30 oct 21
Lab3 advanced port scanning 30 oct 21Lab3 advanced port scanning 30 oct 21
Lab3 advanced port scanning 30 oct 21
 
Introduction To Hystrix
Introduction To HystrixIntroduction To Hystrix
Introduction To Hystrix
 
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...
OSMC 2021 | pg_stat_monitor: A cool extension for better database (PostgreSQL...
 
Summary of linux kernel security protections
Summary of linux kernel security protectionsSummary of linux kernel security protections
Summary of linux kernel security protections
 
Linux Binary Exploitation - Return-oritend Programing
Linux Binary Exploitation - Return-oritend ProgramingLinux Binary Exploitation - Return-oritend Programing
Linux Binary Exploitation - Return-oritend Programing
 
Linux Performance Analysis and Tools
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
 
HBase Tales From the Trenches - Short stories about most common HBase operati...
HBase Tales From the Trenches - Short stories about most common HBase operati...HBase Tales From the Trenches - Short stories about most common HBase operati...
HBase Tales From the Trenches - Short stories about most common HBase operati...
 
redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바redis 소개자료 - 네오클로바
redis 소개자료 - 네오클로바
 
Linux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performanceLinux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performance
 
Linux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old Secrets
 
What is new in PostgreSQL 14?
What is new in PostgreSQL 14?What is new in PostgreSQL 14?
What is new in PostgreSQL 14?
 
POUG2022_OracleDbNestInsideOut.pptx
POUG2022_OracleDbNestInsideOut.pptxPOUG2022_OracleDbNestInsideOut.pptx
POUG2022_OracleDbNestInsideOut.pptx
 
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
Cloud Native ClickHouse at Scale--Using the Altinity Kubernetes Operator-2022...
 
Capturing NIC and Kernel TX and RX Timestamps for Packets in Go
Capturing NIC and Kernel TX and RX Timestamps for Packets in GoCapturing NIC and Kernel TX and RX Timestamps for Packets in Go
Capturing NIC and Kernel TX and RX Timestamps for Packets in Go
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
 
DPDK KNI interface
DPDK KNI interfaceDPDK KNI interface
DPDK KNI interface
 
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
Query Optimization with MySQL 5.6: Old and New Tricks - Percona Live London 2013
 
MySQL Performance schema missing_manual_flossuk
MySQL Performance schema missing_manual_flossukMySQL Performance schema missing_manual_flossuk
MySQL Performance schema missing_manual_flossuk
 
Hortonworks Technical Workshop: Interactive Query with Apache Hive
Hortonworks Technical Workshop: Interactive Query with Apache Hive Hortonworks Technical Workshop: Interactive Query with Apache Hive
Hortonworks Technical Workshop: Interactive Query with Apache Hive
 

Similar to Commit messages - Good practices

Inside asp.net mvc framework
Inside asp.net mvc frameworkInside asp.net mvc framework
Inside asp.net mvc framework
Ciklum Ukraine
 

Similar to Commit messages - Good practices (20)

CodeIgniter Framework
CodeIgniter FrameworkCodeIgniter Framework
CodeIgniter Framework
 
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsEffizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
 
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜 「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
「Code igniter」を読もう。〜ソースコードから知る仕様や拡張方法〜
 
Oracle RightNow Customer Portal Migration
Oracle RightNow Customer Portal MigrationOracle RightNow Customer Portal Migration
Oracle RightNow Customer Portal Migration
 
Agile and compliant firewall ACL configuration management for DevOps
Agile and compliant firewall ACL configuration management for DevOpsAgile and compliant firewall ACL configuration management for DevOps
Agile and compliant firewall ACL configuration management for DevOps
 
Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)Module 3: Introduction to LINQ (PowerPoint Slides)
Module 3: Introduction to LINQ (PowerPoint Slides)
 
Oscon 2010 - ATS
Oscon 2010 - ATSOscon 2010 - ATS
Oscon 2010 - ATS
 
Chef arista devops days a'dam 2015
Chef arista devops days a'dam 2015Chef arista devops days a'dam 2015
Chef arista devops days a'dam 2015
 
Cakephp Interview Questions
Cakephp Interview QuestionsCakephp Interview Questions
Cakephp Interview Questions
 
Mike Weber - Nagios and Group Deployment of Service Checks
Mike Weber - Nagios and Group Deployment of Service ChecksMike Weber - Nagios and Group Deployment of Service Checks
Mike Weber - Nagios and Group Deployment of Service Checks
 
Express 070 536
Express 070 536Express 070 536
Express 070 536
 
java Servlet technology
java Servlet technologyjava Servlet technology
java Servlet technology
 
Inside asp.net mvc framework
Inside asp.net mvc frameworkInside asp.net mvc framework
Inside asp.net mvc framework
 
Inside ASP.NET MVC framework
Inside ASP.NET MVC frameworkInside ASP.NET MVC framework
Inside ASP.NET MVC framework
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
 
MuleSoft Certified Platform Architect Exam Dumps 2023.pdf
MuleSoft Certified Platform Architect Exam Dumps 2023.pdfMuleSoft Certified Platform Architect Exam Dumps 2023.pdf
MuleSoft Certified Platform Architect Exam Dumps 2023.pdf
 
10 Lessons Learned from using Kafka in 1000 microservices - ScalaUA
10 Lessons Learned from using Kafka in 1000 microservices - ScalaUA10 Lessons Learned from using Kafka in 1000 microservices - ScalaUA
10 Lessons Learned from using Kafka in 1000 microservices - ScalaUA
 
PHP Frameworks and CodeIgniter
PHP Frameworks and CodeIgniterPHP Frameworks and CodeIgniter
PHP Frameworks and CodeIgniter
 
Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?
 
using Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API'susing Mithril.js + postgREST to build and consume API's
using Mithril.js + postgREST to build and consume API's
 

More from Tarin Gamberini (6)

Test di Accettazione con Cucumber (LinuxDay 2018 Ferrara)
Test di Accettazione con Cucumber (LinuxDay 2018 Ferrara)Test di Accettazione con Cucumber (LinuxDay 2018 Ferrara)
Test di Accettazione con Cucumber (LinuxDay 2018 Ferrara)
 
MUTANTS KILLER (Revised) - PIT: state of the art of mutation testing system
MUTANTS KILLER (Revised) - PIT: state of the art of mutation testing system MUTANTS KILLER (Revised) - PIT: state of the art of mutation testing system
MUTANTS KILLER (Revised) - PIT: state of the art of mutation testing system
 
MUTANTS KILLER - PIT: state of the art of mutation testing system
MUTANTS KILLER - PIT: state of the art of mutation testing system MUTANTS KILLER - PIT: state of the art of mutation testing system
MUTANTS KILLER - PIT: state of the art of mutation testing system
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Log4j in 8 slides
Log4j in 8 slidesLog4j in 8 slides
Log4j in 8 slides
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Commit messages - Good practices

  • 1. Commit Messages Good Practices by Tarin Gamberini www.taringamberini.com CC BY-NC-SA 3.0
  • 2. Abstract An extremely little set of rules to write good commit messages. History (how code changes over time) become a very useful tool if associated with good commit messages. These slides would make developers more aware about how good commit messages could improve their work.
  • 3. Usually do not write commit messages I have said to my cat that some developers usually do not write commit messages My cat could not belive it ...
  • 4. Usually Do No t write commit Messages ?!?
  • 6. Any software project is a collaborative project Any software project has at least two developers ... Commit Messages Why?
  • 7. … the original developer Commit Messages Why? ... the original developer few months later
  • 8. Because when some poor maintainer is hunting a bug and finds that it was added in revision xyz, he will want to know ... Commit Messages Why?
  • 9. … what revision xyz was supposed to do Commit Messages Why?
  • 10. Because when some requirement can be implemented several ways in the responsible developer will write, in revision xyz ... Commit Messages Why?
  • 11. … why revision xyz was implemented in that way Commit Messages Why?
  • 12. Because when the boss wants to know why a functionality was added, and the developer finds that happened in revision xyz, the developer will want to know ... Commit Messages Why?
  • 13. … why revision xyz was added Commit Messages Why?
  • 15. The following hints are based on experience code development, bug troubleshooting and code review across a number doing of projects using GIT Examination of other projects Such as the Kernel, CoreUtils, GNULIB and more suggested they all follow a fairly common practice Commit Messages hOW?
  • 16. The first line [ Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 Commit Messages hOW?
  • 17. The first line Imperative [ !!! Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 Commit Messages hOW?
  • 18. The first line Imperative Should be limited to 50 chars [ !!! Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 50 Commit Messages hOW?
  • 19. The first line Imperative Should be limited to 50 chars Should not end with a period Commit Messages hOW? [ !!! Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 50
  • 20. The second line [ Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 Commit Messages hOW?
  • 21. The second line Should be blank [ Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 Commit Messages hOW?
  • 22. The second line Should be blank [ Further [ paragraphs came after a blank line Commit Messages hOW? Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657
  • 23. Subsequential lines [ Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 Commit Messages hOW?
  • 24. Subsequential lines Should be limited to 72 chars [ Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 72 Commit Messages hOW?
  • 25. Subsequential lines Should be limited to 72 chars Detailed description of the change Commit Messages hOW? [ Switch libvirt get_cpu_info method over to use config APIs l na i rig lem O b pro hy W y wH Y wh s on i tat y i i m f an l I The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 72
  • 26. External references Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. [ Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 Commit Messages hOW?
  • 27. External references Do not assume availability of external resources Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. [ Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657 Commit Messages hOW?
  • 28. External references Do not assume availability of external resources Bug tracking integration Commit Messages hOW? Switch libvirt get_cpu_info method over to use config APIs The get_cpu_info method in the libvirt driver currently uses XPath queries to extract information from the capabilities XML document. Switch this over to use the new config class LibvirtConfigCaps. Also provide a test case to validate the data being returned. [ Closes-Bug: #1003373 Implements: blueprint libvirt-xml-cpu-model Change-Id: I4946a16d27f712ae2adf8441ce78e6c0bb0bb657
  • 29. Usually write commit messages I have said to my cat that now those developers are getting used to writing amazing commit messages My cat was astonished ...
  • 31. Bibliography Why should I write a commit message? http://programmers.stackexchange.com/questions/52267/why-should-i-write-a-commit-mess age GIT Commit Good Practice https://wiki.openstack.org/wiki/GitCommitMessages A Note About Git Commit Messages http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html Best Practices for Version Control http://blog.looplabel.net/2008/07/28/best-practices-for-version-control/ On commit messages http://who-t.blogspot.de/2009/12/on-commit-messages.html Subversion Best Practices http://svn.apache.org/repos/asf/subversion/trunk/doc/user/svn-best-practices.html Redmine - Administration Guide - Referencing issues in commit messages http://www.redmine.org/projects/redmine/wiki/RedmineSettings#Referencing-issues-in-com mit-messages Is Multiple-Column Online Text Better? It Depends! http://psychology.wichita.edu/surl/usabilitynews/72/columns.asp
  • 32. Images attribution Slide 4 “frightened cat” from Simon Video at http://www.simonvideo.com/iphone-ipod-touch/how-to-downgrade-your-iphone-os-4-0-bet a-3g-on-a-mac/ Slide 7 “the original developer” from High Cats Wallpapers Quality at http://daveandmonicamunson.blogspot.it/2012/04/high-cats-wallpapers-quality.html “the original developer few month later” from Fun and Fitness at Fifty at http://fitnessandfunatfifty.wordpress.com/2012/12/07/where-the-heck-did-i-hide-those-presen ts/forgetful-cat/ Slide 9 “hunting a bug” from Movie Posters – feedio.net at http://img.thesun.co.uk/multimedia/archive/01249/Monkey-massaging-c_1249605a.jpg Slide 11 “orange cat” from Fanpop at http://www.fanpop.com/clubs/think-different/images/31463891/title/orange-cat-photo
  • 33. Images attribution Slide 13 “the boss wants to know” from HD Wallpapers, Images and Photos at http://hdwallpaperen.com/wp-content/uploads/2013/09/Funny-Baby-And-Cat-HD-Wallpaper. jpg Slide 15 “git logo” from SILICON ANGLE at http://siliconangle.com/blog/2012/07/09/social-network-for-developers-github-raises-monst er-series-a-round-funding-100m/ Slide 30 “astonished cat” from Can it be Saturday Now at http://canitbesaturdaynow.com/images/fpics/3244/1264885670882__large.jpg