3.7 KiB
3.7 KiB
Contributing to MaksIT.Core
Thank you for your interest in contributing to MaksIT.Core! This document provides guidelines for contributing to the project.
Getting Started
- Fork the repository
- Clone your fork locally
- Create a new branch for your changes
- Make your changes
- Submit a pull request
Development Setup
Prerequisites
- .NET10 SDK or later
- Git
Building the Project
cd src
dotnet build MaksIT.Core.slnx
Running Tests
cd src
dotnet test MaksIT.Core.Tests
Commit Message Format
This project uses the following commit message format:
(type): description
Commit Types
| Type | Description |
|---|---|
(feature): |
New feature or enhancement |
(bugfix): |
Bug fix |
(refactor): |
Code refactoring without functional changes |
(perf): |
Performance improvement without changing behavior |
(test): |
Add or update tests |
(docs): |
Documentation-only changes |
(build): |
Build system, dependencies, packaging, or project file changes |
(ci): |
CI/CD pipeline or automation changes |
(style): |
Formatting or non-functional code style changes |
(revert): |
Revert a previous commit |
(chore): |
General maintenance tasks that do not fit the types above |
Examples
(feature): add support for custom JWT claims
(bugfix): fix multithreading issue in file logger
(refactor): simplify expression extension methods
(perf): reduce allocations in Base32 encoder
(test): add coverage for IQueryable predicate composition
(docs): clarify release workflow prerequisites
(build): update package metadata in MaksIT.Core.csproj
(ci): update GitHub Actions workflow for .NET 10
(style): normalize using directives in extension tests
(revert): revert breaking change in network connection handling
(chore): update copyright year to 2026
Guidelines
- Use lowercase for the description
- Keep the description concise but descriptive
- No period at the end of the description
Code Style
- Follow standard C# naming conventions
- Use XML documentation comments for public APIs
- Keep methods focused and single-purpose
- Write unit tests for new functionality
Pull Request Process
- Ensure all tests pass
- Update documentation if needed
- Update CHANGELOG.md with your changes under the appropriate version section
- Submit your pull request against the
mainbranch
Versioning
This project follows Semantic Versioning:
- MAJOR - Breaking changes
- MINOR - New features (backward compatible)
- PATCH - Bug fixes (backward compatible)
Release Process
Orchestration lives in utils/ (from maksit-repoutils).
Prerequisites
- .NET SDK, PowerShell 7+, Git, GitHub CLI (
gh) - Environment variables (names match logical secrets in
scriptSettings.json):GitHub— GitHub token (reposcope)NuGet— NuGet.org API key
| Entry | Purpose |
|---|---|
utils\Invoke-TestEngine.bat |
Tests and coverage badges |
utils\Invoke-ReleasePackage-Single.bat |
Release (build, test, pack, publish) |
utils\Update-RepoUtils.bat |
Sync engines from maksit-repoutils |
utils\Force-AmendTaggedCommit.bat |
Amend last tagged commit |
Workflow
- Bump
<Version>insrc/MaksIT.Core/MaksIT.Core.csprojand CHANGELOG.md - Commit, tag
vX.Y.Zonmain - Set
$env:GitHub,$env:NuGet, runutils\Invoke-ReleasePackage-Single.bat
Dry-run: pwsh -File utils\engines\release\Invoke-ReleasePackage.ps1 -DryRun
Configuration: utils/engines/release/scriptSettings.json, utils/engines/test/scriptSettings.json
License
By contributing, you agree that your contributions are licensed under the terms in LICENSE.md.