Skip to content

Commit

Permalink
Update git workflow docs
Browse files Browse the repository at this point in the history
Improved diagram:
- it no longer looks like creating a branch adds a commit
- private mirror is now shows separately to reduce confusion
- updated version numbers
  • Loading branch information
micahsnyder committed Aug 12, 2024
1 parent 61885c1 commit 2826c73
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 13 deletions.
Binary file added src/images/clamav-git-workflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/images/new-git-workflow.png
Binary file not shown.
Binary file removed src/images/old-git-workflow.png
Binary file not shown.
34 changes: 21 additions & 13 deletions src/manual/Development/clamav-git-work-flow.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,36 @@

ClamAV's Git work flow isn't very complicated, but it is more structured than most. It looks like this. Note that in the diagrams below, merged branches are regular merges and will add all of the commits from the source branch to the destination branch. The diagram doesn't show all the merged commits, for simplicity:

![Git Work Flow](../../images/new-git-workflow.png)
![Git Work Flow](../../images/clamav-git-workflow.png)

`main`:
#### `main`:

the development branch. testing is done in pull-requests (PR's), so this branch should be stable, though we make no guarantees.
The development branch. testing is done in pull-requests (PR's), so this branch should be stable, though we make no guarantees.

`rel/0.104`, `rel/1.0`:
#### `rel/1.0`, `rel/1.1`, etc.:

Feature release branches. These always contain the latest stable patch versions for each feature release. When development on a feature release (E.g. `dev/0.104`) or a patch release (E.g. `dev/0.104.1`) is complete, they are merged here and tagged.
Feature release branches. These always contain the latest stable patch versions for each feature release.

`dev/0.104.1`:
When development towards the next feature release is complete, a new `rel/X.Y` branch is created from `main` and a release tag is created.

A development branch used to test hotfixes prior to a patch release
When a new patch version is needed, a `dev/X.Y.Z` branch is created from the `rel/X.Y` branch. When development of that patch version is complete, the `dev/X.Y.Z` branch is merged back into the `rel/X.Y` branch, and a release tag is created.

`sec/dev/0.104.1`:
#### `dev/1.0.1`, `dev/1.0.2`, etc.:

A private development branch used to test security-related hotfixes prior to a patch release. This branch will be rebased like any feature branch as needed up until the release at which point it is merged into the `dev/0.104.1` branch and the `dev/0.104.1` branch is merged into the `rel/0.104` branch and tagged as "`clamav-0.104.1`".
A development branch used to test hotfixes prior to a patch release.

`feature/blah`:
#### `sec/dev/1.0.1`, etc.:

A long-running branch for adding a major feature. It may be rebased several times with the default branch before > it is ready to merge.
A private development branch used to test security-related hotfixes prior to a patch release. This branch will be rebased like any feature branch as needed up until the release.

`CLAM-####-description`, `issue-####-description`, `bb####-description`:
The ClamAV team maintains an internal mirror of the `clamav` repository in order to facilitate private branches, which are not a normal feature of the Git version control system.

A branch for working a JIRA task or GitHub issue. These are typically only found in a personal > fork and appear as pull requests from the fork to the upstream `clamav` repository.
On release day, the private `sec/dev/1.0.1` branch would be pulled into the public `dev/1.0.1` branch and then into the `rel/1.0` branch where it would be tagged as "`clamav-1.0.1`".

#### `feature/description`:

A long-running branch for adding a major feature. It may be rebased several times with the default branch before it is ready to merge.

#### `CLAM-####-description`, `issue-####-description`:

A branch for working a JIRA task or GitHub issue. These are typically only found in a personal fork and appear as pull requests from the fork to the upstream `clamav` repository.

0 comments on commit 2826c73

Please sign in to comment.