Why Version Control? π
Learn how to update your docs locally and deploy them to the public 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:
mainis the production-ready branch where stable code resides, tagged for each release. - Develop Branch:
developserves as the integration branch where tested features merge before release. - Feature Branch: Named
feature/{feature-name}, each new feature gets its own branch offdevelop. - Fix Branch: Named
fix/{issue-identifier}, these branches address non-critical bug fixes and merge back intodevelop. - 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 onmain, then merged into bothmainanddevelop.
β
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
developfor final changes. - Testing: Comprehensive tests validate the code before release.
- Versioning: Follow semantic versioning (X.Y.Z) where:
X= major releaseY= minor updateZ= patch
- 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.
β
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.
Add(profile): Enable profile picture upload
This process ensures that every code change at Yafi is well-organized, fully documented, and easy to track, supporting high-quality releases and effective teamwork.
