Skip to content

Commit a8e1609

Browse files
committed
Add GitHub Discussions badge and comparison table
- Added Discussions badge to README for community engagement - Created comprehensive comparison table with alternatives - Documented all three GitHub workflows (CI, Update CHANGELOG, Release) - Enhanced development workflow with automation details - Added commit message best practices for CHANGELOG categorization - Included important notes about pulling after PR merge and releases Comparison includes: ResXResourceManager, Zeta Resource Editor, Visual Studio, and manual editing Key differentiators: Only Linux-native CLI tool with TUI, auto-discovery, and full CI/CD integration
1 parent 9a3f9df commit a8e1609

File tree

2 files changed

+156
-4
lines changed

2 files changed

+156
-4
lines changed

CONTRIBUTING.md

Lines changed: 129 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -254,9 +254,79 @@ Releases are fully automated via GitHub Actions:
254254

255255
See [BUILDING.md](BUILDING.md) for more details.
256256

257+
## GitHub Workflows
258+
259+
The project uses three automated GitHub Actions workflows:
260+
261+
### 1. CI Workflow (`.github/workflows/ci.yml`)
262+
263+
**Triggers:** Push to `main` or pull requests to `main`
264+
265+
**What it does:**
266+
- Restores dependencies
267+
- Builds the project in Release mode
268+
- Runs all unit and integration tests
269+
- Reports test results
270+
271+
**Skip CI:** Add `[skip ci]` to commit message to skip (used for docs-only changes)
272+
273+
**Example:**
274+
```bash
275+
git commit -m "Update documentation [skip ci]"
276+
```
277+
278+
### 2. Update CHANGELOG Workflow (`.github/workflows/update-changelog.yml`)
279+
280+
**Triggers:** Push to `main` (automatically after your code is merged)
281+
282+
**What it does:**
283+
- Extracts all commits since last release
284+
- Categorizes commits by type:
285+
- `fix`/`fixed`/`bugfix`**Fixed** section
286+
- `feat`/`add`/`added`**Added** section
287+
- `change`/`update`/`refactor`**Changed** section
288+
- Updates `[Unreleased]` section in CHANGELOG.md
289+
- Commits changes back with `[skip ci]`
290+
291+
**Important:**
292+
- Skips if CHANGELOG.md is the only file changed
293+
- Skips commits with `[skip ci]` or "Bump version"
294+
- Won't create infinite loops (uses `[skip ci]` and `paths-ignore`)
295+
- Won't trigger CI or release workflows
296+
297+
**Commit message tips for better CHANGELOG entries:**
298+
```bash
299+
# Good - Will be categorized properly
300+
git commit -m "Fix ResourceFileParser order preservation"
301+
git commit -m "Add demo GIF to README"
302+
git commit -m "Change CI workflow trigger conditions"
303+
304+
# Also works - Keywords detected
305+
git commit -m "Fixed null reference in validator"
306+
git commit -m "Added new export format"
307+
```
308+
309+
### 3. Release Workflow (`.github/workflows/release.yml`)
310+
311+
**Triggers:** Push of special tags: `release-patch`, `release-minor`, `release-major`
312+
313+
**What it does:**
314+
- Bumps version in `.csproj` and `README.md`
315+
- Updates CHANGELOG.md with version and date
316+
- Commits version changes
317+
- Creates version tag (e.g., `v0.6.3`)
318+
- Runs all tests
319+
- Builds all 4 platforms
320+
- Creates GitHub release with binaries
321+
- Cleans up trigger tag
322+
323+
**Note:** Only maintainers trigger releases.
324+
257325
## Development Workflow
258326

259-
### Typical Development Cycle
327+
### Typical Development Cycle with Automation
328+
329+
Here's how your changes flow through the automated system:
260330

261331
```bash
262332
# 1. Sync with upstream
@@ -266,18 +336,73 @@ git pull upstream main
266336
# 2. Create feature branch
267337
git checkout -b feature/my-feature
268338

269-
# 3. Make changes and test
339+
# 3. Make changes and test locally
270340
dotnet build
271341
dotnet test
272342

273-
# 4. Commit changes
343+
# 4. Commit changes (use descriptive prefixes for CHANGELOG)
274344
git add .
275-
git commit -m "Add my feature"
345+
git commit -m "Add support for nested resource files"
346+
# or: "Fix validation for empty values"
347+
# or: "Change export format to include metadata"
276348

277349
# 5. Push to your fork
278350
git push origin feature/my-feature
279351

280352
# 6. Create PR on GitHub
353+
# → CI workflow runs automatically
354+
# → Tests must pass before merge
355+
356+
# 7. After PR is merged to main:
357+
# → CI workflow runs again on main
358+
# → Update CHANGELOG workflow extracts your commit
359+
# → CHANGELOG.md is auto-updated with your changes
360+
# → Categorized based on your commit message keywords
361+
```
362+
363+
### What Happens After Merge
364+
365+
1. **CI Workflow** runs all tests on `main` branch
366+
2. **Update CHANGELOG Workflow** automatically:
367+
- Reads your commit message
368+
- Categorizes it (Fixed/Added/Changed)
369+
- Updates `[Unreleased]` section
370+
- Commits back to `main`
371+
3. Your contribution is now documented and ready for the next release!
372+
373+
**⚠️ Important:** Always pull after your PR is merged:
374+
375+
```bash
376+
# After your PR is merged to main
377+
git checkout main
378+
git pull upstream main # or: git pull origin main
379+
380+
# This fetches the auto-updated CHANGELOG.md
381+
# Without this, your next push might conflict!
382+
```
383+
384+
**Also pull after releases:**
385+
- When a maintainer creates a release, version files are updated
386+
- Always sync before starting new work to avoid conflicts
387+
388+
### Commit Message Best Practices
389+
390+
To ensure proper CHANGELOG categorization:
391+
392+
```bash
393+
# ✅ Good - Clear categorization
394+
git commit -m "Fix memory leak in resource parser"
395+
git commit -m "Add JSON export format"
396+
git commit -m "Change validation to be case-insensitive"
397+
398+
# ✅ Also good - Keywords are detected
399+
git commit -m "Fixed crash when loading empty files"
400+
git commit -m "Added support for comments in CSV"
401+
git commit -m "Refactor export logic for better performance"
402+
403+
# ⚠️ Less ideal - Will default to "Changed"
404+
git commit -m "Update code"
405+
git commit -m "Make improvements"
281406
```
282407

283408
### Keeping Your Fork Updated

README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
[![CI](https://github.com/nickprotop/LocalizationManager/actions/workflows/ci.yml/badge.svg)](https://github.com/nickprotop/LocalizationManager/actions/workflows/ci.yml)
44
[![Release](https://github.com/nickprotop/LocalizationManager/actions/workflows/release.yml/badge.svg)](https://github.com/nickprotop/LocalizationManager/actions/workflows/release.yml)
55
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/nickprotop/LocalizationManager)](https://github.com/nickprotop/LocalizationManager/releases)
6+
[![GitHub Discussions](https://img.shields.io/github/discussions/nickprotop/LocalizationManager)](https://github.com/nickprotop/LocalizationManager/discussions)
67
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
78
[![.NET](https://img.shields.io/badge/.NET-9.0-512BD4)](https://dotnet.microsoft.com/download/dotnet/9.0)
89
[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Windows-blue)](https://github.com/nickprotop/LocalizationManager#installation)
@@ -36,6 +37,32 @@ Whether you're developing on a Linux workstation, managing resources on a server
3637

3738
---
3839

40+
## Comparison with Alternatives
41+
42+
| Feature | LRM | ResXResourceManager | Zeta Resource Editor | Visual Studio | Manual Editing |
43+
|---------|-----|---------------------|---------------------|---------------|----------------|
44+
| **Linux Support** | ✅ Native | ❌ Windows only | ❌ Windows only | ❌ Windows only | ✅ Any editor |
45+
| **Command Line** | ✅ Full CLI | ⚠️ PowerShell scripting | ❌ GUI only | ❌ GUI only | ⚠️ Manual XML |
46+
| **Terminal UI** | ✅ Interactive TUI |||||
47+
| **Auto-discovery** | ✅ Automatic | ⚠️ Manual selection | ⚠️ Manual selection | ⚠️ Manual selection ||
48+
| **Validation** | ✅ Built-in | ✅ Yes | ✅ Yes | ⚠️ Basic ||
49+
| **Statistics** | ✅ Charts + tables | ⚠️ Basic | ✅ Yes |||
50+
| **CSV Import/Export** | ✅ Yes | ✅ Excel | ✅ Excel |||
51+
| **CI/CD Ready** | ✅ Exit codes | ⚠️ Scripting ||| ⚠️ Custom scripts |
52+
| **SSH-Friendly** | ✅ Terminal-based |||| ✅ vim/nano |
53+
| **No .NET Runtime** | ✅ Self-contained | ✅ Requires .NET | ✅ Requires .NET | ✅ Requires VS ||
54+
| **Open Source** | ✅ MIT | ✅ MIT | ⚠️ Requires DevExpress || N/A |
55+
| **Installation** | Single binary | NuGet/Extension | Installer | Full IDE | None |
56+
| **Best For** | Linux devs, CLI, CI/CD | VS users, automation | Windows GUI users | VS developers | Quick edits |
57+
58+
**Key Differentiators:**
59+
-**Only** terminal-based tool with full TUI editor
60+
-**Only** solution designed for Linux/.NET developers
61+
-**Only** tool with auto-discovery of all languages
62+
-**Only** CLI with built-in validation and statistics
63+
64+
---
65+
3966
## Features
4067

4168
### ✅ Current (v0.6.2)

0 commit comments

Comments
 (0)