| 7 | | Configure your WebKit checkout as instructed in https://trac.webkit.org/wiki/UsingGitWithWebKit |
| 8 | | In particular, make sure to follow the instructions from the following sections: |
| 9 | | |
| 10 | | * Commit manually through git-svn directly |
| 11 | | * Checking out Subversion branches |
| 12 | | |
| 13 | | To check out a stable branch, create a local Git branch which tracks the remote |
| 14 | | one you are interested in, and then check it out. For example, for the `webkit-2.26` |
| 15 | | stable release branch: |
| | 7 | Configure your WebKit checkout as instructed in the [wiki:"UsingGitWithWebKit" Using Git with WebKit] page. In particular, make sure to follow the instructions from the following sections: |
| | 8 | |
| | 9 | * Commit Manually Through git-svn Directly |
| | 10 | * Checking out Subversion Branches |
| | 11 | |
| | 12 | To check out a stable branch, create a local Git branch which tracks the remote one you are interested in, and then check it out. For example, for the `webkit-2.26` stable release branch: |
| 24 | | Be careful with this the first time you download the svn branches because it can take a lot of time, prepare the whole thing hour before you want to do the release. |
| 25 | | |
| 26 | | We always use the branches with x.y numbers such as 2.26 to generate the releases, Not the x.y.z ones, such as 2.26.2 (which correspond to the Subversion release “tags”). |
| 27 | | |
| 28 | | == Creating a release branch == |
| | 21 | Be careful because '''the first time you download the Subversion branches this can take a lot of time'''. It is advisable to run this a few hours before working on a release. Incremental fetches will be much faster afterwards. |
| | 22 | |
| | 23 | Note that we always use the branch names with `X.Y` version numbers such as `webkit-2.26` to generate the releases; and not the `X.Y.Z` ones such as `webkit-2.26.2` (which correspond to the Subversion release “tags”). |
| | 24 | |
| | 25 | == Creating a Release Branch == |
| 38 | | * The '''libtool version''' is set to `(C+1, 0, A+1)` *after* the first stable release |
| 39 | | (`x.y+1.0`) has been made from the stable branch. Note that `A` and `R` are the |
| 40 | | values from the stable branch at the time of the `x.y+1.0` release: this bumps |
| 41 | | if “new” API had been added. |
| 42 | | * The package version is immediately set to `x.y+2.0`. |
| 43 | | * In the first unstable release (x.y.1) we update the package version but not the libtool version, since |
| 44 | | we don't really released the x.y.0 version. |
| 45 | | |
| 46 | | You can check more information about this in the [wiki:"WebKitGTK/Releasing" Making a release of WebKit/GTK] |
| 47 | | |
| 48 | | Next sections are creating the commit for the release. |
| | 34 | * The '''libtool version''' is set to `(C+1, 0, A+1)` *after* the first stable release (`x.y+1.0`) has been made from the stable branch. Note that `A` and `R` are the values from the stable branch at the time of the `x.y+1.0` release: this bumps if new API had been added. |
| | 35 | * The '''package version''' is immediately set to `x.y+2.0`. |
| | 36 | * In the first unstable release (x.y.1) we update the '''package version''' (but ''not'' the libtool version), since we don't really released the x.y.0 version. |
| | 37 | |
| | 38 | You can check more information about this in the [wiki:"WebKitGTK/Releasing" Making a release of WebKit/GTK] page. |
| | 39 | |
| | 40 | The next sections explain how to create the commit for the release. |
| 52 | | Edit `Source/cmake/Options{WPE,GTK}.cmake`, change the '''package''' version |
| 53 | | number in the `SET_PROJECT_VERSION()` macro and update the '''libtool soversion''' |
| 54 | | in the `CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE()` one. |
| 55 | | |
| 56 | | Note: There is some discussion of libtool soversions and some more instructions |
| 57 | | for doing releases [https://trac.webkit.org/wiki/WebKitGTK/Releasing here], |
| 58 | | which should probably be merged with this page! |
| | 44 | Edit `Source/cmake/Options{WPE,GTK}.cmake`, change the '''package''' version number in the `SET_PROJECT_VERSION()` macro and update the '''libtool soversion''' in the `CALCULATE_LIBRARY_VERSIONS_FROM_LIBTOOL_TRIPLE()` one. |
| | 45 | |
| | 46 | Note:: There is some discussion of libtool soversions and some more instructions for doing releases [wiki:"WebKitGTK/Releasing" here], which should probably be merged with this page! |
| 73 | | You can also check the changes from GTK's last release changes to use them, a lot of them are for both ports. |
| 74 | | |
| 75 | | Create a local commit with Git containing the edits to the `.cmake` and `NEWS` |
| 76 | | files, then add a WebKit ChangeLog entry indicating that those changes are |
| | 59 | You can also check the changes from GTK's last release changes to use them, a lot of them are for both ports—but be careful to remove from the WPE release notes those entries which only apply to the GTK port if you do this! |
| | 60 | |
| | 61 | Create a local commit with Git containing the edits to the `.cmake` and `NEWS` files, then add a WebKit ChangeLog entry indicating that those changes are |
| 91 | | This is required only for releases done from a stable branch. Note that releases |
| 92 | | with version ≥X.Y.90 are done from the stable branch as well. |
| 93 | | |
| 94 | | Before cutting a new release, we need to check whether there are pending merges to |
| 95 | | impoty into the stable branch. Wiki pages like https://trac.webkit.org/wiki/WebKitGTK/2.26.x |
| | 76 | This is required only for releases done from a stable branch. Note that releases with version ≥X.Y.90 are done from the stable branch as well. |
| | 77 | |
| | 78 | Before cutting a new release, we need to check whether there are pending merges to import into the stable branch. Wiki pages like [wiki:WebKitGTK/2.26.x] |
| 98 | | First, check out and switch to the stable release branch (see above for configuration). |
| 99 | | Then, for each patch listed for merging: |
| 100 | | |
| 101 | | 1. Find the Git commit-id from the Subversion revision, or from any other means (e.g. |
| 102 | | the Git commit log). The command `git svn find-rev <svn-revision> master` can be |
| 103 | | used to find the Git commit-id for commits present in `trunk`. |
| 104 | | |
| 105 | | 2. Cherry-pick the commit, resolving conflicts if needed. As a shortcut, a command |
| 106 | | like `git cherry-pick $(git svn find-rev <svn-revision> master` can be used. |
| 107 | | |
| 108 | | 3. Use `git commit --amend`, prepend the string `Merge rNNN -` to |
| 109 | | the first line, and remove the git-svn information from the last line of the |
| 110 | | commit log. |
| | 81 | First, check out and switch to the stable release branch (see above for configuration). Then, for each patch listed for merging: |
| | 82 | |
| | 83 | 1. Find the Git commit-id from the Subversion revision, or from any other means (e.g. the Git commit log). The command `git svn find-rev <svn-revision> master` can be used to find the Git commit-id for commits present in `trunk`. |
| | 84 | 2. Cherry-pick the commit, resolving conflicts if needed. As a shortcut, a command like `git cherry-pick $(git svn find-rev <svn-revision> master` can be used. |
| | 85 | 3. Use `git commit --amend`, prepend the string `Merge rNNN -` to the first line, and remove the git-svn information from the last line of the commit log. |
| 114 | | In order to make release tarballs, you need the build directory configured with |
| 115 | | the `DEVELOPER_MODE` option enabled: |
| 116 | | |
| 117 | | In order to do this we need a version of libwpe in the paths, we can compile them in a directory, inside jhbuild or install them in the system. |
| | 89 | In order to make release tarballs, you need the build directory configured with the `DEVELOPER_MODE` option enabled. A suitable version of `libwpe` needs to be installed (as it is a build dependency); it could be installed in its own directory (a prefix-installation), inside the JHBuild environment (which can be WebKit's internal one), or installed in the system directories. |
| | 90 | |
| | 91 | To configure with developer mode enabled and generate tarballs, use: |
| 130 | | Once pending merges have been done (if any), edit `Options{WPE,GTK}.cmake` to update |
| 131 | | the version numbers, add the release notes into `Source/WebKit/{wpe,gtk}/NEWS`, and |
| 132 | | make a new local commit using Git. Then push the changes to the branch with |
| 133 | | `git svn dcommit`. |
| 134 | | |
| 135 | | Finally, use `svn cp` to create the release “tag” into the Subversion repository |
| 136 | | (a tag in Subversion is a branch which only has one revision with the state of |
| 137 | | the tree at the time of making the release): |
| | 107 | Once pending merges have been done (if any), edit `Options{WPE,GTK}.cmake` to update the version numbers, add the release notes into `Source/WebKit/{wpe,gtk}/NEWS`, and make a new local commit using Git. Then push the changes to the branch with `git svn dcommit`. |
| | 108 | |
| | 109 | Finally, use `svn cp` to create the release “tag” into the Subversion repository (a tag in Subversion is a branch which only has one revision with the state of the tree at the time of making the release): |