@logickernel/agileflow 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,448 +1,347 @@
1
- # Branching Strategy Guide
1
+ # Branching Strategy
2
2
 
3
- AgileFlow introduces a simplified, yet powerful branching strategy that eliminates the complexity of traditional multi-branch workflows while maintaining flexibility for development teams.
3
+ AgileFlow uses a simplified branching strategy that eliminates complexity while maintaining flexibility.
4
4
 
5
5
  ## Overview
6
6
 
7
- Unlike traditional Git workflows that rely on multiple long-lived branches for different environments, AgileFlow uses a **main-branch-first approach** where:
7
+ Unlike traditional Git workflows with multiple long-lived branches, AgileFlow uses:
8
8
 
9
- - **Main branch** is the single source of truth for all releases
10
- - **Development branches** are short-lived and focused on specific changes
11
- - **All versions** are created from the same branch, ensuring consistency
12
- - **Environment management** is handled through configuration, not branches
9
+ - **Main branch** Single source of truth for all releases
10
+ - **Feature branches** Short-lived branches for development
11
+ - **Version tags** Immutable markers for each release
12
+
13
+ ```
14
+ main ─────●─────●─────●─────●───▶
15
+ │ │ │ │
16
+ v v v v
17
+ v1.0.0 v1.0.1 v1.1.0 v1.2.0
18
+ ▲ ▲
19
+ │ │
20
+ feat/auth─┘ │
21
+ fix/crash─┘
22
+ ```
23
+
24
+ ---
13
25
 
14
26
  ## Core Principles
15
27
 
16
28
  ### 1. Main Branch as Release Source
17
29
 
18
- The main branch (or master) serves as the foundation for all releases:
19
-
20
- ```mermaid
21
- graph LR
22
- A[main branch] --> B[v1.0.0]
23
- A --> C[v1.0.1]
24
- A --> D[v1.1.0]
25
- A --> E[v2.0.0]
26
-
27
- F[feature branch] --> A
28
- G[bugfix branch] --> A
29
- H[hotfix branch] --> A
30
- ```
30
+ All releases come from main:
31
31
 
32
- **Key Benefits:**
33
- - **Single Version Sequence**: All versions share the same lineage
34
- - **Consistent History**: Every release builds on the same foundation
35
- - **Simplified Rollbacks**: Easy to revert to any previous version
36
- - **No Branch Drift**: All environments can run identical versions
32
+ - **Single version sequence** — v1.0.0, v1.0.1, v1.1.0 all share the same lineage
33
+ - **Consistent history** Every release builds on the same foundation
34
+ - **Simple rollbacks** Just deploy a previous version
35
+ - **No branch drift** All environments run identical code
37
36
 
38
37
  ### 2. Short-Lived Development Branches
39
38
 
40
- Development branches are created for specific purposes and merged back quickly:
39
+ Create focused branches, merge quickly:
41
40
 
42
- - **Purpose**: Implement features, fix bugs, or make improvements
43
- - **Lifespan**: Days to weeks, not months
44
- - **Target**: Always merge back to main when complete
45
- - **Naming**: Descriptive names that indicate purpose
41
+ - **Purpose** One feature, one fix, or one improvement
42
+ - **Lifespan** Days to weeks, not months
43
+ - **Target** Always merge to main
44
+ - **Naming** Descriptive prefix (feat/, fix/, etc.)
46
45
 
47
- ### 3. Version-Centric Deployments
46
+ ### 3. Version-Based Deployments
48
47
 
49
- Instead of branch-based environments, AgileFlow uses version-based deployments:
48
+ Deploy versions, not branches:
50
49
 
51
- ```mermaid
52
- graph LR
53
- A[Version v1.2.3] --> B[Staging Environment]
54
- A --> C[Production Environment]
55
- A --> D[Testing Environment]
56
-
57
- E[Version v1.2.2] --> F[Previous Production]
58
50
  ```
51
+ Version v1.2.3
52
+
53
+ ├──▶ Staging
54
+ ├──▶ Production
55
+ └──▶ Any environment
56
+ ```
57
+
58
+ ---
59
59
 
60
- ## Branch Types and Naming
60
+ ## Branch Types
61
61
 
62
62
  ### Feature Branches
63
63
 
64
- For new features and enhancements:
64
+ For new functionality:
65
65
 
66
66
  ```bash
67
- # Branch naming patterns
68
67
  git checkout -b feat/user-authentication
69
68
  git checkout -b feat/api-rate-limiting
70
- git checkout -b feat/dark-mode-ui
69
+ git checkout -b feat/dark-mode
71
70
  ```
72
71
 
73
72
  **When to use:**
74
- - Adding new functionality
73
+ - Adding new features
75
74
  - Implementing user stories
76
- - Creating new API endpoints
77
- - Adding new UI components
75
+ - Creating new endpoints
78
76
 
79
77
  **Workflow:**
80
- 1. Create branch from main
81
- 2. Implement feature with conventional commits
82
- 3. Test thoroughly
83
- 4. Create merge request
84
- 5. Merge to main (triggers version bump)
78
+ 1. Create from main
79
+ 2. Develop with conventional commits
80
+ 3. Open pull/merge request
81
+ 4. Merge to main → triggers version bump
85
82
 
86
- ### Bug Fix Branches
83
+ ### Fix Branches
87
84
 
88
- For fixing bugs and issues:
85
+ For bug fixes:
89
86
 
90
87
  ```bash
91
- # Branch naming patterns
92
- git checkout -b fix/login-validation-error
93
- git checkout -b fix/api-timeout-issue
88
+ git checkout -b fix/login-validation
89
+ git checkout -b fix/api-timeout
94
90
  git checkout -b fix/memory-leak
95
91
  ```
96
92
 
97
93
  **When to use:**
98
- - Fixing production bugs
99
- - Resolving test failures
100
- - Addressing security issues
101
- - Fixing performance problems
102
-
103
- **Workflow:**
104
- 1. Create branch from main
105
- 2. Fix the issue with conventional commits
106
- 3. Add tests to prevent regression
107
- 4. Create merge request
108
- 5. Merge to main (triggers patch version)
94
+ - Fixing bugs
95
+ - Resolving errors
96
+ - Addressing issues
109
97
 
110
98
  ### Hotfix Branches
111
99
 
112
100
  For urgent production fixes:
113
101
 
114
102
  ```bash
115
- # Branch naming patterns
116
- git checkout -b hotfix/critical-security-patch
117
- git checkout -b hotfix/database-connection-fix
118
- git checkout -b hotfix/urgent-performance-fix
103
+ git checkout -b hotfix/security-patch
104
+ git checkout -b hotfix/critical-bug
119
105
  ```
120
106
 
121
107
  **When to use:**
122
108
  - Critical production issues
123
109
  - Security vulnerabilities
124
- - Data corruption issues
125
110
  - Service outages
126
111
 
127
112
  **Workflow:**
128
- 1. Create branch from main
113
+ 1. Create from main
129
114
  2. Implement minimal fix
130
- 3. Test thoroughly
131
- 4. Create merge request
132
- 5. Merge to main (triggers immediate patch version)
133
- 6. Deploy immediately
115
+ 3. Fast-track review
116
+ 4. Merge and deploy immediately
134
117
 
135
118
  ### Refactor Branches
136
119
 
137
- For code improvements and technical debt:
120
+ For code improvements:
138
121
 
139
122
  ```bash
140
- # Branch naming patterns
141
123
  git checkout -b refactor/auth-service
142
124
  git checkout -b refactor/database-layer
143
- git checkout -b refactor/api-structure
144
125
  ```
145
126
 
146
127
  **When to use:**
147
128
  - Improving code structure
148
129
  - Reducing technical debt
149
130
  - Optimizing performance
150
- - Modernizing dependencies
151
131
 
152
- **Workflow:**
153
- 1. Create branch from main
154
- 2. Implement refactoring
155
- 3. Ensure all tests pass
156
- 4. Create merge request
157
- 5. Merge to main (triggers patch version)
132
+ ---
158
133
 
159
134
  ## Branch Lifecycle
160
135
 
161
- ### 1. Creation
136
+ ### Create
162
137
 
163
138
  ```bash
164
- # Always start from main
139
+ # Always start from updated main
165
140
  git checkout main
166
141
  git pull origin main
167
-
168
- # Create new branch
169
142
  git checkout -b feat/new-feature
170
143
  ```
171
144
 
172
- **Best Practices:**
173
- - Always start from an up-to-date main branch
174
- - Use descriptive branch names
175
- - Include type prefix (feat/, fix/, refactor/, etc.)
176
-
177
- ### 2. Development
145
+ ### Develop
178
146
 
179
147
  ```bash
180
148
  # Make changes with conventional commits
181
- git add .
182
- git commit -m "feat: implement user authentication system"
183
- git commit -m "test: add authentication unit tests"
184
- git commit -m "docs: update API documentation"
149
+ git commit -m "feat: implement user login"
150
+ git commit -m "test: add login tests"
151
+ git commit -m "docs: update auth documentation"
185
152
  ```
186
153
 
187
- **Best Practices:**
188
- - Use conventional commits consistently
189
- - Make small, focused commits
190
- - Include tests for new functionality
191
- - Update documentation as needed
192
-
193
- ### 3. Integration
154
+ ### Sync
194
155
 
195
156
  ```bash
196
- # Keep branch up to date with main
157
+ # Keep up to date with main
197
158
  git checkout main
198
159
  git pull origin main
199
160
  git checkout feat/new-feature
200
161
  git rebase main
201
162
  ```
202
163
 
203
- **Best Practices:**
204
- - Rebase regularly to avoid conflicts
205
- - Resolve conflicts during rebase
206
- - Keep commits clean and logical
207
-
208
- ### 4. Completion
164
+ ### Complete
209
165
 
210
166
  ```bash
211
- # Push branch and create merge request
167
+ # Push and create pull/merge request
212
168
  git push origin feat/new-feature
213
169
  ```
214
170
 
215
- **Best Practices:**
216
- - Ensure all tests pass
217
- - Code review completed
218
- - Documentation updated
219
- - Ready for production
220
-
221
- ### 5. Merge and Cleanup
171
+ ### Cleanup
222
172
 
223
173
  ```bash
224
- # After merge request is approved and merged
174
+ # After merge
225
175
  git checkout main
226
176
  git pull origin main
227
177
  git branch -d feat/new-feature
228
178
  git push origin --delete feat/new-feature
229
179
  ```
230
180
 
231
- **Best Practices:**
232
- - Delete local branch after merge
233
- - Delete remote branch after merge
234
- - Keep repository clean
181
+ ---
235
182
 
236
183
  ## Version Management
237
184
 
238
- ### Automatic Version Bumping
185
+ ### Automatic Bumping
239
186
 
240
- AgileFlow automatically determines version bumps based on commit types:
187
+ AgileFlow determines version bumps from commits:
241
188
 
242
189
  ```bash
243
- # Patch version (v1.0.0 → v1.0.1)
190
+ # Patch bump (v1.0.0 → v1.0.1)
244
191
  fix: resolve login bug
245
- refactor: improve error handling
246
- perf: optimize database queries
247
- build: update dependencies
248
- ci: fix pipeline configuration
249
- revert: "feat: add experimental feature"
192
+ perf: optimize queries
193
+ refactor: simplify logic
250
194
 
251
- # No version bump
252
- docs: update README
253
- style: fix code formatting
254
- chore: update dependencies
195
+ # Minor bump (v1.0.0 → v1.1.0)
196
+ feat: add user dashboard
255
197
 
256
- # Minor version (v1.0.0 → v1.1.0)
257
- feat: add user authentication
258
- perf: optimize database queries
259
-
260
- # Major version (v1.0.0 → v2.0.0)
198
+ # Major bump (v1.0.0 → v2.0.0)
261
199
  feat!: remove deprecated API
262
- BREAKING CHANGE: change database schema
200
+
201
+ # No bump
202
+ docs: update README
203
+ chore: update dependencies
263
204
  ```
264
205
 
265
206
  ### Version Tags
266
207
 
267
- Every merge to main creates a new version tag:
208
+ Every merge to main creates a tag:
268
209
 
269
210
  ```bash
270
- # View all versions
211
+ # List versions
271
212
  git tag --sort=-version:refname
272
213
 
273
- # Checkout specific version
274
- git checkout v1.2.3
275
-
276
214
  # View version details
277
215
  git show v1.2.3
216
+
217
+ # Checkout version
218
+ git checkout v1.2.3
278
219
  ```
279
220
 
221
+ ---
222
+
280
223
  ## Environment Management
281
224
 
282
- ### Configuration Over Code
225
+ ### Configuration Over Branches
283
226
 
284
- Instead of different branches for different environments, use configuration:
227
+ Use configuration for environment differences, not branches:
285
228
 
229
+ **GitHub Actions:**
230
+ ```yaml
231
+ deploy-staging:
232
+ environment: staging
233
+ env:
234
+ DATABASE_URL: ${{ secrets.STAGING_DB_URL }}
235
+
236
+ deploy-production:
237
+ environment: production
238
+ env:
239
+ DATABASE_URL: ${{ secrets.PROD_DB_URL }}
240
+ ```
241
+
242
+ **GitLab CI:**
286
243
  ```yaml
287
- # .gitlab-ci.yml
288
244
  deploy-staging:
289
- stage: deploy
290
- script:
291
- - kubectl set image deployment/myapp myapp=myapp:${VERSION}
292
245
  environment:
293
246
  name: staging
294
247
  variables:
295
- DATABASE_URL: "staging-db.example.com"
296
- LOG_LEVEL: "debug"
248
+ DATABASE_URL: "$STAGING_DB_URL"
297
249
 
298
250
  deploy-production:
299
- stage: deploy
300
- script:
301
- - kubectl set image deployment/myapp myapp=myapp:${VERSION}
302
251
  environment:
303
252
  name: production
304
253
  variables:
305
- DATABASE_URL: "prod-db.example.com"
306
- LOG_LEVEL: "info"
254
+ DATABASE_URL: "$PROD_DB_URL"
307
255
  ```
308
256
 
309
- ### Environment-Specific Configs
310
-
311
- ```yaml
312
- # config/staging.yaml
313
- database:
314
- host: staging-db.example.com
315
- port: 5432
316
- ssl: false
317
-
318
- # config/production.yaml
319
- database:
320
- host: prod-db.example.com
321
- port: 5432
322
- ssl: true
323
- ```
257
+ ---
324
258
 
325
259
  ## Best Practices
326
260
 
327
- ### 1. Keep Branches Small and Focused
261
+ ### Keep Branches Small
328
262
 
329
263
  ```bash
330
- # ✅ Good - Single purpose
264
+ # ✅ Good Single purpose
331
265
  git checkout -b feat/user-login
332
266
  git checkout -b fix/password-validation
333
267
 
334
- # ❌ Bad - Multiple unrelated changes
268
+ # ❌ Bad Multiple purposes
335
269
  git checkout -b feature-and-bugfixes
336
270
  ```
337
271
 
338
- ### 2. Use Conventional Commits
272
+ ### Use Conventional Commits
339
273
 
340
274
  ```bash
341
- # ✅ Good
342
- feat(auth): add OAuth2 login support
343
- fix(api): handle null user ID gracefully
344
- refactor(db): normalize user table schema
275
+ # ✅ Good — Clear type and scope
276
+ feat(auth): add OAuth2 support
277
+ fix(api): handle null user ID
345
278
 
346
- # ❌ Bad
279
+ # ❌ Bad — No type
347
280
  add oauth login
348
281
  fix bug
349
- refactor stuff
350
282
  ```
351
283
 
352
- ### 3. Regular Integration
284
+ ### Rebase Regularly
353
285
 
354
286
  ```bash
355
- # Rebase weekly to avoid large conflicts
287
+ # Weekly sync with main
356
288
  git checkout main
357
- git pull origin main
289
+ git pull
358
290
  git checkout your-branch
359
291
  git rebase main
360
292
  ```
361
293
 
362
- ### 4. Clean Merge History
363
-
364
- ```bash
365
- # Use rebase and merge for clean history
366
- git checkout main
367
- git pull origin main
368
- git checkout feature-branch
369
- git rebase main
370
- git checkout main
371
- git merge --ff-only feature-branch
372
- ```
373
-
374
- ### 5. Immediate Cleanup
294
+ ### Clean Up After Merge
375
295
 
376
296
  ```bash
377
- # Delete branches after merge
378
297
  git branch -d feature-branch
379
298
  git push origin --delete feature-branch
380
299
  ```
381
300
 
382
- ## Migration from Traditional Workflows
301
+ ---
383
302
 
384
- ### From GitFlow
303
+ ## Migration from Other Workflows
385
304
 
386
- If you're currently using GitFlow:
305
+ ### From GitFlow
387
306
 
388
- 1. **Stop creating release branches** - use main for all releases
389
- 2. **Eliminate develop branch** - work directly from main
390
- 3. **Convert hotfix branches** to hotfix/ branches that merge to main
391
- 4. **Use feature branches** as before, but merge to main
392
- 5. **Implement AgileFlow** for version management
307
+ 1. Stop creating release/develop branches
308
+ 2. Use main for all releases
309
+ 3. Convert hotfix branches to hotfix/ prefix
310
+ 4. Let AgileFlow handle versioning
393
311
 
394
312
  ### From GitHub Flow
395
313
 
396
- If you're using GitHub Flow:
397
-
398
- 1. **Keep main branch** as your primary branch
399
- 2. **Continue using feature branches** for development
400
- 3. **Add AgileFlow** for automatic versioning
401
- 4. **Use version-based deployments** instead of branch-based
314
+ 1. Continue using feature branches
315
+ 2. Add AgileFlow for versioning
316
+ 3. Deploy versions instead of branches
402
317
 
403
318
  ### From Trunk-Based Development
404
319
 
405
- If you're using trunk-based development:
320
+ 1. Continue working on main
321
+ 2. Use branches for larger changes
322
+ 3. Add AgileFlow for versioning
406
323
 
407
- 1. **Continue working on main** for small changes
408
- 2. **Use feature branches** for larger changes
409
- 3. **Add AgileFlow** for version management
410
- 4. **Implement conventional commits** for automatic versioning
324
+ ---
411
325
 
412
326
  ## Troubleshooting
413
327
 
414
- ### Common Issues
415
-
416
- **Merge Conflicts**
417
- - Rebase regularly to minimize conflicts
418
- - Resolve conflicts during rebase, not merge
419
- - Keep branches small and focused
420
-
421
- **Branch Divergence**
422
- - Always start from up-to-date main
423
- - Rebase instead of merge when updating
424
- - Delete branches after merge
425
-
426
- **Version Conflicts**
427
- - Ensure conventional commits are used
428
- - Check that AgileFlow is properly configured
429
- - Verify merge request process
328
+ ### Merge Conflicts
430
329
 
431
- ### Getting Help
330
+ - Rebase regularly
331
+ - Keep branches small
332
+ - Resolve during rebase, not merge
432
333
 
433
- - **Documentation**: Check other guides in this documentation
434
- - **Examples**: Review the getting started guide
435
- - **Community**: Join discussions in the community forum
436
- - **Issues**: Open an issue in the project repository
334
+ ### Branch Divergence
437
335
 
438
- ## Conclusion
336
+ - Always start from updated main
337
+ - Rebase instead of merge
338
+ - Delete branches after merge
439
339
 
440
- AgileFlow's branching strategy provides a simplified, yet powerful approach to Git workflow management. By focusing on the main branch as the single source of truth and using short-lived development branches, teams can:
340
+ ---
441
341
 
442
- - **Reduce complexity** in their Git workflow
443
- - **Maintain consistency** across all environments
444
- - **Automate versioning** through conventional commits
445
- - **Simplify deployments** with version-based releases
446
- - **Improve collaboration** with clear branch purposes
342
+ ## Related Documentation
447
343
 
448
- This approach transforms complex multi-branch workflows into a streamlined, version-centric process that scales from small teams to large enterprises.
344
+ - [Getting Started](./getting-started.md) Quick start
345
+ - [Conventional Commits](./conventional-commits.md) — Commit format
346
+ - [Version-Centric CI/CD](./version-centric-cicd.md) — Pipeline methodology
347
+ - [Release Management](./release-management.md) — Managing releases