Handbook
Version Control Workflow

Version Control Workflow

Last updated by Noel Varanda (opens in a new tab),
Version control
Trunk-based development
Software development
Collaboration
Code quality

Teams benefit from a version control workflow that promotes collaboration, traceability, and streamlined development. Consider utilizing the following practices to enhance your workflow:

Trunk-based development

Consider embracing a trunk-based development approach for your version control workflow. Trunk-based development involves:

  • Main Branch The main (or master) branch is the stable and production-ready version of the codebase.
  • Feature Branches

    Create branches off the main branch for new features or bug fixes. Merge them back through pull requests.
  • Pull Requests

    Provide an opportunity for code review, feedback, and collaboration before merging into the main branch.
  • Frequent Integration

    Developers integrate feature branches frequently to detect and resolve conflicts early.
  • Small, Scoped Changes

    Break down work into manageable tasks for quicker feedback and to avoid long-lived feature branches.
  • Automated Testing Have a robust suite of automated tests for different aspects of the application, ensuring stability.

By following the trunk-based development model, you can foster continuous integration, encourage frequent code reviews, and identify conflicts or issues early. This approach promotes collaboration and helps maintain a stable and reliable codebase.

To learn more about Trunk-Based Development, refer to this guide on Trunk-Based Development (opens in a new tab).

Conventional commits

Consider employing the Conventional Commits specification for commit messages to enhance your version control workflow. This convention can help maintain a consistent and descriptive commit history, facilitating the understanding of the changes introduced.

A conventional commit message has the following structure:

<type>(<scope>): <description>
 
<body>
 
Reference: <JIRA-ticket>
  • <type> represents the type of the commit (e.g., feat, fix, docs).
  • <scope> (optional) specifies the scope or component affected by the commit.
  • <description> provides a concise and meaningful description of the changes made.
  • Reference: <JIRA-ticket> includes the reference to the corresponding JIRA ticket for tracking purposes.

In addition to the commit message structure, it is encouraged to include a commit body for more detailed information about the changes. The commit body allows providing context, explaining the rationale behind the changes, and documenting any breaking changes if applicable.

Example commit message

Here's an example of a well-formatted commit message:

feat: Implement new user authentication flow
 
This commit adds a new user authentication flow with support for
email verification and password reset functionality.
 
Closes JIRA-123

Including a commit body helps improve the clarity and comprehensibility of your commit history.

To learn more about Conventional Commits, check out the Conventional Commits website (opens in a new tab).

In this example, the "feat" prefix is used to indicate a new feature implementation. The commit message provides a concise summary of the changes and includes the JIRA ticket reference for better traceability.

Best practices

Consider the following best practices to improve your version control workflow:

  • Commit frequently and in small logical units.
  • Provide a clear and concise commit message that describes the purpose of the change.
  • Use the appropriate commit type prefix (e.g., feat, fix, chore, etc.) to categorize the nature of the change.
  • Include the JIRA ticket reference in the commit message, ensuring proper linkage between code changes and project management.
  • Avoid committing large binary files or sensitive information.
  • Use Git aliases and automation tools to streamline repetitive tasks and reduce manual errors.

By adhering to these best practices, you can maintain a clean and structured version control history, making it easier to track changes.

Remember, version control is a collaborative effort, and effective communication and coordination with your team members are essential for a smooth workflow.


Keep up to date with any latest changes or announcements by subscribing to the newsletter below.