|
| 1 | +Branches used in this repo |
| 2 | +========================== |
| 3 | + |
| 4 | +The document explains the branching structure that we are using in the VFSForGit repository as well as the forking strategy that we have adopted for contributing. |
| 5 | + |
| 6 | +Repo Branches |
| 7 | +------------- |
| 8 | + |
| 9 | +1. `vfs-#` |
| 10 | + |
| 11 | + These branches are used to track the specific version that match Git for Windows with the VFSForGit specific patches on top. When a new version of Git for Windows is released, the VFSForGit patches will be rebased on that windows version and a new gvfs-# branch created to create pull requests against. |
| 12 | + |
| 13 | + #### Examples |
| 14 | + |
| 15 | + ``` |
| 16 | + vfs-2.27.0 |
| 17 | + vfs-2.30.0 |
| 18 | + ``` |
| 19 | +
|
| 20 | + The versions of git for VFSForGit are based on the Git for Windows versions. v2.20.0.vfs.1 will correspond with the v2.20.0.windows.1 with the VFSForGit specific patches applied to the windows version. |
| 21 | +
|
| 22 | +2. `vfs-#-exp` |
| 23 | +
|
| 24 | + These branches are for releasing experimental features to early adopters. They |
| 25 | + should contain everything within the corresponding `vfs-#` branch; if the base |
| 26 | + branch updates, then merge into the `vfs-#-exp` branch as well. |
| 27 | +
|
| 28 | +Tags |
| 29 | +---- |
| 30 | +
|
| 31 | +We are using annotated tags to build the version number for git. The build will look back through the commit history to find the first tag matching `v[0-9]*vfs*` and build the git version number using that tag. |
| 32 | +
|
| 33 | +Full releases are of the form `v2.XX.Y.vfs.Z.W` where `v2.XX.Y` comes from the |
| 34 | +upstream version and `Z.W` are custom updates within our fork. Specifically, |
| 35 | +the `.Z` value represents the "compatibility level" with VFS for Git. Only |
| 36 | +increase this version when making a breaking change with a released version |
| 37 | +of VFS for Git. The `.W` version is used for minor updates between major |
| 38 | +versions. |
| 39 | +
|
| 40 | +Experimental releases are of the form `v2.XX.Y.vfs.Z.W.exp`. The `.exp` |
| 41 | +suffix indicates that experimental features are available. The rest of the |
| 42 | +version string comes from the full release tag. These versions will only |
| 43 | +be made available as pre-releases on the releases page, never a full release. |
| 44 | +
|
| 45 | +Forking |
| 46 | +------- |
| 47 | +
|
| 48 | +A personal fork of this repository and a branch in that repository should be used for development. |
| 49 | +
|
| 50 | +These branches should be based on the latest vfs-# branch. If there are work in progress pull requests that you have based on a previous version branch when a new version branch is created, you will need to move your patches to the new branch to get them in that latest version. |
| 51 | +
|
| 52 | +#### Example |
| 53 | +
|
| 54 | +``` |
| 55 | +git clone <personal fork repo URL> |
| 56 | +git remote add ms https://github.com/Microsoft/git.git |
| 57 | +git checkout -b my-changes ms/vfs-2.20.0 --no-track |
| 58 | +git push -fu origin HEAD |
| 59 | +``` |
0 commit comments