vcs:gitworkflow
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
vcs:gitworkflow [2021/03/29 10:54] – Changed git.php.net to GitHub sergey | vcs:gitworkflow [2023/08/31 08:55] (current) – Add --atomic flag ilutov | ||
---|---|---|---|
Line 6: | Line 6: | ||
We will use release branches for the php-src.git repository. We will have branches for actively maintained | We will use release branches for the php-src.git repository. We will have branches for actively maintained | ||
- | versions. For example: **7.2**, **7.3**, **7.4**, **8.0** and **master**. A patch will be applied to the oldest possible branch. | + | versions. For example: **7.4**, **8.0**, **8.1** and **master**. A patch will be applied to the oldest possible branch. |
- | If the Release Manager of 5.6 accepts the change, commit it to the 5.6 branch. We will use regular merging between the release branches. | + | If the Release Manager of 7.4 accepts the change, commit it to the 7.4 branch. We will use regular merging between the release branches. |
Bigger features can use feature branches, but developers are encouraged to fork php on github and start implementing the | Bigger features can use feature branches, but developers are encouraged to fork php on github and start implementing the | ||
feature there on the respective branch. | feature there on the respective branch. | ||
Line 24: | Line 24: | ||
==== Initial Setup ==== | ==== Initial Setup ==== | ||
- | |||
- | First, go to '' | ||
$ git clone git@github.com: | $ git clone git@github.com: | ||
Line 37: | Line 35: | ||
==== Patching a release branch ==== | ==== Patching a release branch ==== | ||
- | Patching the PHP 7.2 branch: | + | Patching the PHP 7.4 branch: |
- | $ git checkout PHP-7.2 | + | $ git checkout PHP-7.4 |
... hack hack ... | ... hack hack ... | ||
$ git commit <changed files> | $ git commit <changed files> | ||
... USE A GOOD COMMIT MESSAGE ... | ... USE A GOOD COMMIT MESSAGE ... | ||
- | ... run tests ... | ||
- | $ git checkout PHP-7.3 | ||
- | $ git merge PHP-7.2 | ||
- | ... run tests ... | ||
- | $ git checkout PHP-7.4 | ||
- | $ git merge PHP-7.3 | ||
... run tests ... | ... run tests ... | ||
$ git checkout PHP-8.0 | $ git checkout PHP-8.0 | ||
$ git merge PHP-7.4 | $ git merge PHP-7.4 | ||
... run tests ... | ... run tests ... | ||
- | $ git checkout | + | $ git checkout |
$ git merge PHP-8.0 | $ git merge PHP-8.0 | ||
+ | ... run tests ... | ||
+ | $ git checkout PHP-8.2 | ||
+ | $ git merge PHP-8.1 | ||
+ | ... run tests ... | ||
+ | $ git checkout master | ||
+ | $ git merge PHP-8.2 | ||
... run tests ... | ... run tests ... | ||
$ gitk master | $ gitk master | ||
... review the merges ... | ... review the merges ... | ||
- | $ git push origin PHP-7.2 PHP-7.3 PHP-7.4 PHP-8.0 master | + | $ git push --atomic |
... push to the official repository ... | ... push to the official repository ... | ||
| | ||
When you use 'git push --all origin', | When you use 'git push --all origin', | ||
+ | |||
+ | Use the ' | ||
==== Reviewing and closing pull requests ==== | ==== Reviewing and closing pull requests ==== | ||
Line 71: | Line 71: | ||
==== Merge a pull request ==== | ==== Merge a pull request ==== | ||
- | Preferably, pull requests should not be merged, but rebased onto the target branch. Because it is common that PRs need to be applied to a different branch than the one it was originally created for, the easiest way to do this is using '' | + | Preferably, pull requests should not be merged, but rebased onto the target branch. Because it is common that PRs need to be applied to a different branch than the one it was originally created for, the easiest way to do this is using '' |
- | $ git checkout PHP-7.2 | + | $ git checkout PHP-7.4 |
$ wget https:// | $ wget https:// | ||
$ git am -3 1234.patch | $ git am -3 1234.patch | ||
Line 80: | Line 80: | ||
$ make test | $ make test | ||
.. you better not forget that ... | .. you better not forget that ... | ||
- | $ git checkout PHP-7.3 | ||
- | $ git merge PHP-7.2 | ||
- | $ make test | ||
- | $ git checkout PHP-7.4 | ||
- | $ git merge PHP-7.3 | ||
- | $ make test | ||
$ git checkout PHP-8.0 | $ git checkout PHP-8.0 | ||
$ git merge PHP-7.4 | $ git merge PHP-7.4 | ||
$ make test | $ make test | ||
- | $ git checkout | + | $ git checkout |
$ git merge PHP-8.0 | $ git merge PHP-8.0 | ||
$ make test | $ make test | ||
- | $ git push origin | + | $ git checkout master |
+ | $ git merge PHP-8.1 | ||
+ | $ make test | ||
+ | $ git push origin | ||
Additionally, | Additionally, | ||
| | ||
=== Note about moving patches from a newer branch === | === Note about moving patches from a newer branch === | ||
- | In case you have to merge a commit from a higher branch. E.g from PHP-7.3 into PHP-7.2 make sure you still merge upwards | + | In case you have to merge a commit from a higher branch. E.g from PHP-8.1 into PHP-7.4 make sure you still merge upwards |
as described above afterward: | as described above afterward: | ||
- | $ git checkout PHP-7.2 | ||
- | $ git cherry-pick < | ||
- | $ git checkout PHP-7.3 | ||
- | $ git merge PHP-7.2 | ||
$ git checkout PHP-7.4 | $ git checkout PHP-7.4 | ||
- | $ git merge PHP-7.3 | + | $ git cherry-pick < |
$ git checkout PHP-8.0 | $ git checkout PHP-8.0 | ||
$ git merge PHP-7.4 | $ git merge PHP-7.4 | ||
- | $ git checkout | + | $ git checkout |
$ git merge PHP-8.0 | $ git merge PHP-8.0 | ||
+ | $ git checkout master | ||
+ | $ git merge PHP-8.1 | ||
$ git push | $ git push | ||
- | **TL;DR: Always try to merge PHP-7.2 into PHP-7.3, then PHP-7.4, then PHP-8.0, and then into master.** | + | **TL;DR: Always try to merge PHP-7.4 into PHP-8.0, then PHP-8.1, and then into master.** |
==== Merge patches received per mail ==== | ==== Merge patches received per mail ==== | ||
Line 156: | Line 151: | ||
$ git remote add upstream https:// | $ git remote add upstream https:// | ||
$ git fetch upstream | $ git fetch upstream | ||
- | $ git branch --track issue-< | + | $ git branch --track issue-< |
$ git checkout issue-< | $ git checkout issue-< | ||
Do your stuff and add/commit your work accordingly. | Do your stuff and add/commit your work accordingly. | ||
Optionally, you can rebase your work: | Optionally, you can rebase your work: | ||
- | $ git pull --rebase upstream PHP-7.2 (or use upstream master) | + | $ git pull --rebase upstream PHP-7.4 (or use upstream master) |
Push your branch to your github repository: | Push your branch to your github repository: | ||
$ git push origin issue-< | $ git push origin issue-< | ||
Line 178: | Line 173: | ||
If you prefer mail use git format-patch and send the created patch using mail: | If you prefer mail use git format-patch and send the created patch using mail: | ||
- | $ git format-patch origin/ | + | $ git format-patch origin/ |
0001-bug-fix.patch | 0001-bug-fix.patch | ||
... | ... | ||
Line 187: | Line 182: | ||
| | ||
If you don't have an issue-number, | If you don't have an issue-number, | ||
- | As stated before, branch from the lowest version possible. When you want to create a patch that needs to be incorporated into several branches, like a security fix for something in PHP-7.1, PHP-7.2, PHP-7.3, PHP-7.4, PHP-8.0 | + | As stated before, branch from the lowest version possible. When you want to create a patch that needs to be incorporated into several branches, like a security fix for something in PHP-7.4, PHP-8.0, PHP-8.1, and the master, make sure you checkout a branch from PHP-7.4. You don't need to create separate pull requests for PHP-7.4, PHP-8.0, PHP-8.1, and master. |
vcs/gitworkflow.1617015257.txt.gz · Last modified: 2021/03/29 10:54 by sergey