Skip to main content

Version Control πŸ”„

At Wavez Engineering, version control is fundamental to managing, tracking, and coordinating code changes. With version control, we maintain a clear history of edits, enable efficient teamwork, and simplify code comparison and rollback. Here’s our approach to version control at Wavez.

Why Version Control? 🌍

Version control systems are essential tools in our development workflow, allowing us to:
  • Record Code Evolution: Keep a detailed log of every change.
  • Enable Collaboration: Facilitate multiple developers working in parallel.
  • Easily Roll Back: Revert to previous versions when necessary.
  • Ensure Code Stability: Support consistent, production-ready code.

Commit Message Standards πŸ“œ

Clear, concise commit messages make it easy to understand the purpose of each code change. Our commit message categories help with consistency:
  • feat: Adds a new feature.
  • fix: Corrects an existing issue.
  • chore: Handles routine updates like dependency changes.
  • refactor: Improves code structure without altering functionality.
  • docs: Updates documentation files.
  • style: Applies non-functional formatting changes.
  • test: Adds or modifies tests.
  • perf: Enhances performance.
  • ci: Adjusts continuous integration configurations.
  • build: Modifies build scripts or dependencies.
  • revert: Reverts a previous change.
  • meta: Updates metadata like contributors or licenses.

Example:

"feat: Add user profile customization feature"

Branching Strategy 🌿

We follow a structured branching strategy to keep development organized and releases smooth.
  • Main Branch: main is the production-ready branch where stable code resides, tagged for each release.
  • Develop Branch: develop serves as the integration branch where tested features merge before release.
  • Feature Branch: Named feature/{feature-name}, each new feature gets its own branch off develop.
  • Fix Branch: Named fix/{issue-identifier}, these branches address non-critical bug fixes and merge back into develop.
  • Release Branch: Named release/{release-version}, this branch finalizes a version for production with any last adjustments.
  • Hotfix Branch: Named hotfix/{issue-identifier}, used for urgent fixes directly on main, then merged into both main and develop.

Release Management πŸš€

Our release management process ensures stability, quality, and consistency in production.
  • Planning: Define release scope based on feature readiness.
  • Release Branch Creation: Create a release branch from develop for final changes.
  • Testing: Comprehensive tests validate the code before release.
  • Versioning: Follow semantic versioning (X.Y.Z) where:
    • X = major release
    • Y = minor update
    • Z = patch
Example tag:
git tag -a v2.1.0 -m "Version 2.1.0 Release"
  • Deployment: Publish to production with appropriate support.
  • Post-release Monitoring: Observe the release for stability and gather user feedback.

Change Log Management πŸ“‹

A detailed change log provides a clear record of modifications. Each entry in our change log includes:
  • Type: (e.g., Added, Changed, Fixed, Removed)
  • Description: Brief summary of the change.
  • Author: Name of the contributor.
  • Merge Request Link: URL to the relevant merge request.
  • Reference Link: URL to the related issue or discussion.
  • Date: Date of the change.
Example Entry:
## [2.1.0] - 2024-11-14
### Added
- **Description**: Introduced enhanced profile customization.
- **Author**: Alex Rivera
- **Merge Request**: [#101](https://gitlab.com/project/repo/merge_requests/101)
- **Reference**: [#210](https://gitlab.com/project/repo/issues/210)
- **Date**: 2024-11-14

Commit Naming Conventions πŸ–‹οΈ

For clarity, commit messages follow this standard format:
  • Type: Action type (e.g., Add, Fix, Update, Remove).
  • Scope: Project area (e.g., profile, dashboard).
  • Description: Concise summary of the change.
Example: Add(profile): Enable profile picture upload
This process ensures that every code change at Wavez is well-organized, fully documented, and easy to track, supporting high-quality releases and effective teamwork.