diff --git a/src/images/clamav-git-workflow.png b/src/images/clamav-git-workflow.png new file mode 100755 index 0000000..33b20e0 Binary files /dev/null and b/src/images/clamav-git-workflow.png differ diff --git a/src/images/new-git-workflow.png b/src/images/new-git-workflow.png deleted file mode 100644 index 86fc4c6..0000000 Binary files a/src/images/new-git-workflow.png and /dev/null differ diff --git a/src/images/old-git-workflow.png b/src/images/old-git-workflow.png deleted file mode 100644 index 6d6d58f..0000000 Binary files a/src/images/old-git-workflow.png and /dev/null differ diff --git a/src/manual/Development/clamav-git-work-flow.md b/src/manual/Development/clamav-git-work-flow.md index 7b32bdf..97b5209 100644 --- a/src/manual/Development/clamav-git-work-flow.md +++ b/src/manual/Development/clamav-git-work-flow.md @@ -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.