142 lines
3.5 KiB
Markdown
142 lines
3.5 KiB
Markdown
# Git Workflow
|
|
|
|
This repository uses `master` as the clean framework branch. Mission folders are
|
|
kept off `master` so the framework can be versioned without bundling local test
|
|
missions or playable mission copies.
|
|
|
|
## Branch Roles
|
|
|
|
- `master`: framework source, addon code, Rust extension code, docs, tooling,
|
|
and release tags.
|
|
- `missions/local-mission-copies`: local mission folders used for testing and
|
|
mission iteration. This branch is not pushed unless intentionally needed.
|
|
- `archive/pre-v0.1-history`: read-only archive of the previous full `master`
|
|
history before the `v0.1.0` baseline cleanup.
|
|
|
|
## Daily Framework Work
|
|
|
|
Start from the clean framework branch.
|
|
|
|
```powershell
|
|
git switch master
|
|
git pull
|
|
git status --short --branch
|
|
```
|
|
|
|
Create a short-lived feature branch for framework work.
|
|
|
|
```powershell
|
|
git switch -c feature/garage-marker-selection
|
|
```
|
|
|
|
Make the change, validate it, then commit.
|
|
|
|
```powershell
|
|
git status --short --branch
|
|
git add arma/client/addons/garage/functions/fnc_initContextService.sqf
|
|
git commit -m "Improve garage spawn marker selection"
|
|
```
|
|
|
|
Merge the work back into `master`. Squash merges keep future `master` history
|
|
compact.
|
|
|
|
```powershell
|
|
git switch master
|
|
git merge --squash feature/garage-marker-selection
|
|
git commit -m "Improve garage spawn marker selection"
|
|
git push
|
|
```
|
|
|
|
Remove the local feature branch when it is no longer needed.
|
|
|
|
```powershell
|
|
git branch -D feature/garage-marker-selection
|
|
```
|
|
|
|
## Mission Work
|
|
|
|
Switch to the local mission branch before editing mission folders.
|
|
|
|
```powershell
|
|
git switch missions/local-mission-copies
|
|
git status --short --branch
|
|
```
|
|
|
|
Mission folders currently tracked on that branch:
|
|
|
|
```text
|
|
arma/forge_framework.Malden
|
|
arma/forge_pmc_simulator.Tanoa
|
|
arma/forge_pmc_simulator_v2.Tanoa
|
|
```
|
|
|
|
Commit mission-only changes on the mission branch.
|
|
|
|
```powershell
|
|
git add arma/forge_pmc_simulator.Tanoa
|
|
git commit -m "Update PMC simulator mission setup"
|
|
```
|
|
|
|
Do not merge the mission branch into `master`. If a mission change becomes
|
|
framework code, copy only the reusable files or logic onto a framework feature
|
|
branch created from `master`.
|
|
|
|
Example:
|
|
|
|
```powershell
|
|
git switch master
|
|
git switch -c feature/cad-on-demand-task-request
|
|
|
|
# Bring over only the framework files needed from the mission branch.
|
|
git checkout missions/local-mission-copies -- arma/client/addons/cad/functions/fnc_initUIBridge.sqf
|
|
git checkout missions/local-mission-copies -- arma/server/addons/cad/XEH_preInit.sqf
|
|
|
|
git add arma/client/addons/cad/functions/fnc_initUIBridge.sqf arma/server/addons/cad/XEH_preInit.sqf
|
|
git commit -m "Add CAD on-demand mission task request bridge"
|
|
```
|
|
|
|
## Release Versioning
|
|
|
|
Use tags to mark framework releases.
|
|
|
|
Version guideline:
|
|
|
|
- Patch, such as `v0.1.1`: fixes and small compatible changes.
|
|
- Minor, such as `v0.2.0`: new modules or features.
|
|
- Major, such as `v1.0.0`: stable release line or breaking changes.
|
|
|
|
Create a release tag from `master`.
|
|
|
|
```powershell
|
|
git switch master
|
|
git pull
|
|
git status --short --branch
|
|
git tag -a v0.1.1 -m "v0.1.1"
|
|
git push origin master
|
|
git push origin v0.1.1
|
|
```
|
|
|
|
## Safety Checks
|
|
|
|
Before committing on `master`, check that no mission folders are staged.
|
|
|
|
```powershell
|
|
git status --short --branch
|
|
```
|
|
|
|
On `master`, these paths should not appear:
|
|
|
|
```text
|
|
arma/forge_framework.Malden
|
|
arma/forge_pmc_simulator.Tanoa
|
|
arma/forge_pmc_simulator_v2.Tanoa
|
|
```
|
|
|
|
If mission files appear while on `master`, stop and switch to the mission
|
|
branch before continuing.
|
|
|
|
```powershell
|
|
git switch missions/local-mission-copies
|
|
```
|
|
|