mirror of
https://github.com/godotengine/godot-contributing-docs.git
synced 2025-12-31 05:48:13 +03:00
Group pull request info back together, since only engine contributors can realistically review pull requests.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
First Steps
|
||||
First steps
|
||||
===========
|
||||
|
||||
The possibility to study, use, modify and redistribute modifications of the
|
||||
|
||||
13
engine/pull_requests/index.rst
Normal file
13
engine/pull_requests/index.rst
Normal file
@@ -0,0 +1,13 @@
|
||||
Pull requests
|
||||
=============
|
||||
|
||||
This section explains how to work with pull requests.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
:name: sec-pull-requests
|
||||
|
||||
creating_pull_requests
|
||||
review_process
|
||||
review_guidelines
|
||||
testing
|
||||
369
engine/pull_requests/review_guidelines.rst
Normal file
369
engine/pull_requests/review_guidelines.rst
Normal file
@@ -0,0 +1,369 @@
|
||||
.. _doc_pr_review_guidelines:
|
||||
|
||||
Review guidelines
|
||||
=================
|
||||
|
||||
Code review and testing
|
||||
-----------------------
|
||||
|
||||
The following is a list of things that contributors and engine maintainers can
|
||||
do to conduct a substantive code review of a pull request.
|
||||
|
||||
.. note::
|
||||
If you want to conduct a code review, but can't do everything on this list,
|
||||
say that in your review comment. For example, it is still very helpful to
|
||||
provide comments on code, even if you can't build the pull request locally to
|
||||
test the pull request (or vice versa). Feel free to review the code, just
|
||||
remember to make a note at the end of your review that you have reviewed the
|
||||
code only and have not tested the changes locally.
|
||||
|
||||
1. Confirm that the problem exists
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
PRs need to solve problems and problems need to be documented. Make sure that
|
||||
the pull request links and closes (or at least addresses) a bug or a proposal.
|
||||
If it doesn't, consider asking the contributor to update the opening message of
|
||||
the PR to explain the problem that the PR aims to solve in more detail.
|
||||
|
||||
.. note::
|
||||
It should be clear _why_ a pull request is needed before it is merged. This
|
||||
assists reviewers in determining whether a PR does what it says it does and it
|
||||
helps contributors in the future understand why the code is the way it is.
|
||||
|
||||
2. Test the PR and look for regressions
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
While strict code review and CI help to ensure that all pull requests work as
|
||||
intended, mistakes happen and sometimes contributors push code that creates a
|
||||
problem in addition to solving a problem. Maintainers will avoid merging code
|
||||
that contains a regression even if it solves the problem as intended.
|
||||
|
||||
When reviewing a pull request, ensure that the PR does what it says it does
|
||||
(i.e. fixes the linked bug or implements the new feature) and nothing outside of
|
||||
the PR target area is broken by the change. You can do this by running the
|
||||
editor and trying out some common functions of the editor (adding objects to a
|
||||
scene, running GDScript, opening and closing menus etc.). Also, while reviewing
|
||||
the code, look for suspicious changes in other parts of the engine. Sometimes
|
||||
during rebasing changes slip through that contributors are not aware of.
|
||||
|
||||
3. Do a code review
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Code reviews are usually done by people who are already experienced in a given
|
||||
area. They may be able to provide ideas to make code faster, more organized, or
|
||||
more idiomatic. But, even if you are not very experienced, you may want to
|
||||
conduct a code review to provide feedback within the scope of what you are
|
||||
comfortable reviewing. Doing so is valuable for the area maintainer (as a second
|
||||
set of eyes on a problem is always helpful) and it is also helpful for you as it
|
||||
will help you get more familiar with that area of code and will expose you to
|
||||
how other people solve problems. In fact, reviewing the code of experienced
|
||||
engine maintainers is a great way to get to know the codebase.
|
||||
|
||||
Here are some things to think about and look out for as you review the code:
|
||||
|
||||
* **Code only touches the areas announced in the PR (and the commit
|
||||
message).**
|
||||
|
||||
It can be tempting to fix random things in the code, as you see them. However,
|
||||
this can quickly make a pull request difficult to review and can make it hard
|
||||
to dig through in the commit history. Small touch-ups next to the related area
|
||||
are alright, but often bugs that you can find along the way are better fixed
|
||||
in their own PRs.
|
||||
|
||||
* **Code properly uses Godot's own APIs and patterns.**
|
||||
|
||||
Consistency is very important, and a solution that already exists in the
|
||||
codebase is preferable to an ad-hoc solution.
|
||||
|
||||
* **Are core areas affected by the change?**
|
||||
|
||||
Sometimes a PR that is supposed to solve a local problem can have a
|
||||
far-reaching effect way outside of its scope. Usually it is best to keep code
|
||||
changes local to where the problem arises. If you think that the solution
|
||||
requires changes outside the scope of the problem, it is usually best to seek
|
||||
the opinion of a team leader who may have another idea for how to solve the
|
||||
problem.
|
||||
|
||||
4. Iterate with the contributor and improve the PR
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Maintainers should provide feedback and suggestions for improvement if they spot
|
||||
things in the code that they would like changed. Preferably, suggestions should
|
||||
come in order of importance: first, address overall code design and the approach
|
||||
to solving the problem, then make sure the code is complying with the engine's
|
||||
best practices, and lastly, do the :ref:`code style review <doc_code_style_review>`.
|
||||
|
||||
.. note::
|
||||
|
||||
**Communicate barriers to merging early in the review process.**
|
||||
|
||||
If the PR has clear blockers or will likely not get merged for whatever other
|
||||
reason, that fact should be communicated as early and clearly as possible. We
|
||||
want to avoid stringing people along because it feels bad to say "sorry, no".
|
||||
|
||||
As you review pull requests, keep the Godot `Code of Conduct
|
||||
<https://godotengine.org/code-of-conduct>`_ in mind. Especially the following:
|
||||
|
||||
* Politeness is expected at all times. Be kind and courteous.
|
||||
|
||||
* Always assume positive intent from others.
|
||||
|
||||
* Feedback is always welcome, but keep your criticism constructive.
|
||||
|
||||
Here are some things to avoid as you iterate on a pull request with a
|
||||
contributor:
|
||||
|
||||
* **Needless double reviews.**
|
||||
|
||||
In other words, review the full PR at once and avoid coming back endless times
|
||||
to point out issues that you could have noted in the first review. Of course,
|
||||
this can't always be avoided, but we should try to catch everything at once.
|
||||
|
||||
* **Being overly nitpicky.**
|
||||
|
||||
Code quality can be flexible depending on the area of the engine you are
|
||||
working in. In general, our standard for code quality is much higher in core
|
||||
areas and in performance-sensitive areas than it is in editor code for
|
||||
example.
|
||||
|
||||
* **Expanding the scope of a pull request.**
|
||||
|
||||
Providing context or related/similar issues or proposals that may be fixed
|
||||
similarly can be helpful, but adding a "may as well fix that thing over there
|
||||
as well while at it" or "could we add to this as well?" isn't always fair to
|
||||
the contributor. Use your judgement when deciding whether additional fixes are
|
||||
within scope, but try to keep the scope as close to the original pull request
|
||||
as possible.
|
||||
|
||||
And ultimately, don't feel pressured to deal with the PR all alone. Feel free to
|
||||
ask for a helping hand on the `Godot Contributors Chat
|
||||
<https://chat.godotengine.org>`_, in the appropriate channel or in #general.
|
||||
Other teams may already be tagged for review, so you can also wait or ask for
|
||||
their assistance.
|
||||
|
||||
5. Approve the pull request
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
After reviewing the code, if you think that the code is ready to be merged into
|
||||
the engine, then go ahead and "approve" it. Make sure to also comment and
|
||||
specify the nature of your review (i.e. say whether you ran the code locally,
|
||||
whether you reviewed for style as well as correctness, etc.). Even if you are
|
||||
not an engine maintainer, approving a pull request signals to others that the
|
||||
code is good and likely solves the problem the PR says it does. Approving a pull
|
||||
request as a non-engine maintainer does not guarantee that the code will be
|
||||
merged, other people will still review it, so don't be shy.
|
||||
|
||||
.. _doc_code_style_review:
|
||||
|
||||
Code style review
|
||||
-----------------
|
||||
|
||||
Generally speaking, we aim to conduct a code review before a style/clarity
|
||||
review as contributors typically want to know if their general approach is
|
||||
acceptable before putting in the effort to make nitpicky changes to style. In
|
||||
other words, maintainers shouldn't ask contributors to change the style of code
|
||||
that may need to be rewritten in subsequent reviews. Similarly, maintainers
|
||||
should avoid asking for contributors to rebase PRs if the PR has not been
|
||||
reviewed.
|
||||
|
||||
That being said, not everyone feels confident enough to provide a review on code
|
||||
correctness, in that case, providing comments on code style and clarity ahead of
|
||||
a more substantive code review is totally appropriate and more than welcome.
|
||||
|
||||
In practice the code style review can be done as part of the substantive code
|
||||
review. The important thing is that both the substantive code and the code style
|
||||
need to be reviewed and considered before a pull request is merged.
|
||||
|
||||
When reviewing code style pay particular attention to ensuring that the pull
|
||||
request follows the :ref:`doc_code_style_guidelines`. While ``clang-format`` and
|
||||
various CI checks can catch a lot of inconsistencies, they are far from perfect
|
||||
and are unable to detect some issues. For example, you should check that:
|
||||
|
||||
* The style of header includes is respected.
|
||||
* Identifiers use ``snake_case`` and follow our naming conventions.
|
||||
* Method parameters start with ``p_*`` or ``r_*`` (if they are used to return
|
||||
a value).
|
||||
* Braces are used appropriately, even for one-liner conditionals.
|
||||
* Code is properly spaced (exactly one empty line between methods, no
|
||||
unnecessary empty lines inside of method bodies).
|
||||
|
||||
.. note::
|
||||
|
||||
This list is not complete and doesn't aim to be complete. Refer to
|
||||
the linked style guide document for a complete set of rules. Keep
|
||||
in mind that ``clang-format`` may not catch things you hope it would,
|
||||
so pay attention and try to build a sense of what exactly it can and
|
||||
cannot detect.
|
||||
|
||||
Merging pull requests
|
||||
---------------------
|
||||
|
||||
In general, pull requests should only be merged by members of the production
|
||||
team or team leaders for pull requests in their area of the engine. For example,
|
||||
the networking team leader could merge a networking pull request that doesn't
|
||||
substantially change non-networking sections of code.
|
||||
|
||||
In practice it is best to wait for a member of the production team to merge the
|
||||
pull request as they keep a close eye on the entire codebase and will likely
|
||||
have a better sense of what other recent/upcoming changes this pull request may
|
||||
conflict with (or any other reason that it may make sense to delay the pull
|
||||
request). Feel free to leave a comment saying that the PR should be ready to
|
||||
merge.
|
||||
|
||||
The following are the steps to take before merging a pull request. The degree to
|
||||
which you adhere to these steps can be flexible for simple/straightforward pull
|
||||
requests, but they should be carefully taken for complex or risky pull requests.
|
||||
|
||||
As a contributor you can help move a pull request forward by doing some of these
|
||||
steps yourself.
|
||||
|
||||
1. Get feedback from the right people/teams
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Production team members should ensure that the right people look at a pull
|
||||
request before it is merged. In some cases this may require multiple people to
|
||||
weigh in. In other cases, only one substantive approval is needed before the
|
||||
code can be merged.
|
||||
|
||||
In general, try not to merge things based on one review alone, especially if it
|
||||
is your own. Get a second opinion from another maintainer, and make sure all the
|
||||
teams that may be impacted have been reasonably represented by the reviewers.
|
||||
For example, if a pull request adds to the documentation, it's often useful to
|
||||
let the area maintainers check it for factual correctness and let documentation
|
||||
maintainers check it for formatting, style, and grammar.
|
||||
|
||||
A good rule of thumb is that at least one subject matter expert should have
|
||||
approved the pull request for correctness, and at least one other maintainer
|
||||
should have approved the pull request for code style. Either of those people
|
||||
could be the person merging the pull request.
|
||||
|
||||
Make sure that the reviews and approvals were left by people competent in that
|
||||
specific engine area. It is possible that even a long-standing member of the
|
||||
Godot organization left a review without having the relevant expertise.
|
||||
|
||||
.. note::
|
||||
|
||||
An easy way to find PRs that may be ready for merging is filtering by
|
||||
approved PRs and sorting by recently updated. For example, in the main Godot
|
||||
repository, you can use `this link
|
||||
<https://github.com/godotengine/godot/pulls?q=is%3Apr+is%3Aopen+review%3Aapproved+sort%3Aupdated-desc>`_.
|
||||
|
||||
2. Get feedback from the community
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If a pull request is having trouble attracting reviewers, you may need to reach
|
||||
out more broadly to ask for help reviewing. Consider asking:
|
||||
|
||||
* the person who reported the bug if the pull request fixes the bug for them,
|
||||
* contributors who have recently edited that file if they could take a look, or
|
||||
* a more experienced maintainer from another area if they could provide feedback.
|
||||
|
||||
3. Git checklist
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
* **Make sure that the PR comes in one commit.**
|
||||
|
||||
When each commit is self-contained and could be used to build a clean and
|
||||
working version of the engine, it may be okay to merge a pull request with
|
||||
multiple commits, but in general, we require that all pull requests only have
|
||||
one commit. This helps us keep the Git history clean.
|
||||
|
||||
* **Fixes made during the review process must be squashed into
|
||||
the main commit.**
|
||||
|
||||
For multi-commit PRs check that those fixes are amended in the relevant
|
||||
commits, and are not just applied on top of everything.
|
||||
|
||||
* **Make sure that the PR has no merge conflicts.**
|
||||
|
||||
Contributors may need to rebase their changes on top of the relevant branch
|
||||
(e.g. ``master`` or ``3.x``) and manually fix merge conflicts. Even if there
|
||||
are no merge conflicts, contributors may need to rebase especially old PRs as
|
||||
the GitHub conflict checker may not catch all conflicts, or the CI may have
|
||||
changed since it was originally run.
|
||||
|
||||
* **Check for proper commit attribution.**
|
||||
|
||||
If a contributor uses an author signature that is not listed in their GitHub
|
||||
account, GitHub won't link the merged pull request to their account. This
|
||||
keeps them from getting proper credit in the GitHub history and makes them
|
||||
appear like a new contributor on the GitHub UI even after several
|
||||
contributions.
|
||||
|
||||
Ultimately, it's up to the user if they want to fix it, but they can do so by
|
||||
authoring the Git commit with the same email they use for their GitHub
|
||||
account, or by adding the email they used for the Git commit to their GitHub
|
||||
profile.
|
||||
|
||||
* **Check for proper commit messages.**
|
||||
|
||||
While we don't have a very strict ruleset for commit messages, we still
|
||||
require them to be short yet descriptive and use proper English. As a
|
||||
maintainer you've probably written them enough times to know how to make one,
|
||||
but for a general template think about *"Fix <issue> in <part of codebase>"*.
|
||||
For a more detailed recommendation see the `contributing.md
|
||||
<https://github.com/godotengine/godot/blob/master/CONTRIBUTING.md#format-your-commit-messages-with-readability-in-mind>`_
|
||||
page in the main Godot repository.
|
||||
|
||||
4. GitHub checklist
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
* **Validate the target branch of the PR.**
|
||||
|
||||
Most Godot development happens around in the ``master`` branch. Therefore most
|
||||
pull requests must be made against it. From there pull requests can then be
|
||||
backported to other branches. Be wary of people making PRs on the version they
|
||||
are using (e.g, ``3.3``) and guide them to make a change against a
|
||||
higher-order branch (e.g. ``3.x``). If the change is not applicable for the
|
||||
``master`` branch, the initial PR can be made against the current maintenance
|
||||
branch, such as ``3.x``. It's okay for people to make multiple PRs for each
|
||||
target branch, especially if the changes cannot be easily backported.
|
||||
Cherry-picking is also an option, if possible. Use the appropriate labels if
|
||||
the PR can be cherrypicked (e.g. ``cherrypick:3.x``).
|
||||
|
||||
.. note::
|
||||
|
||||
It is possible to change the target branch of the PR, that has already been
|
||||
submitted, but be aware of the consequences. As it cannot be synchronized
|
||||
with the push, the target branch change will inevitable tag the entire list
|
||||
of maintainers for review. It may also render the CI incapable of running
|
||||
properly. A push should help with that, but if nothing else, recommend
|
||||
opening a new, fresh PR.
|
||||
|
||||
* **Make sure that the appropriate milestone is assigned.**
|
||||
|
||||
This will make it more obvious which version would include the submitted
|
||||
changes, should the pull request be merged now. Note, that the milestone is
|
||||
not a binding contract and does not guarantee that this version is definitely
|
||||
going to include the PR. If the pull request is not merged before the version
|
||||
is released, the milestone will be moved (and the PR itself may require a
|
||||
target branch change).
|
||||
|
||||
Similarly, when merging a PR with a higher milestone than the current version,
|
||||
or a "wildcard" milestone (e.g. "4.x"), ensure to update the milestone to the
|
||||
current version.
|
||||
|
||||
* **Make sure that the opening message of the PR contains the
|
||||
magic words "Closes #..." or "Fixes #...".**
|
||||
|
||||
These link the PR and the referenced issue together and allow GitHub to
|
||||
auto-close the latter when you merge the changes. Note, that this only works
|
||||
for the PRs that target the ``master`` branch. For others you need to pay
|
||||
attention and close the related issues manually. Do it with *"Fixed by #..."*
|
||||
or *"Resolved by #..."* comment to clearly indicate the act for future
|
||||
contributors.
|
||||
|
||||
* **For the issues that get closed by the PR add the closest
|
||||
relevant milestone.**
|
||||
|
||||
In other words, if the PR is targeting the ``master`` branch, but is then also
|
||||
cherrypicked for ``3.x``, the next ``3.x`` release would be the appropriate
|
||||
milestone for the closed issue.
|
||||
|
||||
5. Merge the pull request
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If it is appropriate for you to be merging a pull request (i.e. you are on the
|
||||
production team or you are the team leader for that area), you are confident
|
||||
that the pull request has been sufficiently reviewed, and once you carry out
|
||||
these steps you can go ahead and merge the pull request.
|
||||
54
engine/pull_requests/review_process.rst
Normal file
54
engine/pull_requests/review_process.rst
Normal file
@@ -0,0 +1,54 @@
|
||||
Review process
|
||||
==============
|
||||
|
||||
.. note::
|
||||
|
||||
This page is intended to provide insight into the pull request (PR) review
|
||||
process that we aspire to. As such, it is primarily targeted at engine
|
||||
maintainers who are responsible for reviewing and approving pull requests.
|
||||
That being said, much of the content is useful for prospective contributors
|
||||
wanting to know how to ensure that their PR is merged.
|
||||
|
||||
From a high level, the ideal life cycle of a pull request looks like the
|
||||
following:
|
||||
|
||||
1. A contributor opens a PR that fixes a specific problem (optimally closing
|
||||
a GitHub `issue <https://github.com/godotengine/godot>`_ or implementing
|
||||
a `proposal <https://github.com/godotengine/godot-proposals>`_).
|
||||
|
||||
2. Other contributors provide feedback on the PR (including reviewing and/or
|
||||
approving the PR, as appropriate).
|
||||
|
||||
3. An engine maintainer reviews the code and provides feedback, requests
|
||||
changes, or approves the pull request, as appropriate.
|
||||
|
||||
4. Another maintainer reviews the code with a focus on code style/clarity and
|
||||
approves it once satisfied.
|
||||
|
||||
5. A team leader or a member of the `production team
|
||||
<https://godotengine.org/teams#production>`_ merges the pull request if
|
||||
satisfied that it has been sufficiently reviewed.
|
||||
|
||||
This document will explain steps 2, 3, 4, and 5 in more detail. For a more
|
||||
detailed explanation of the pull request workflow please see the :ref:`pull
|
||||
request workflow document <doc_pr_workflow>`.
|
||||
|
||||
.. note::
|
||||
In practice these steps may blend together. Oftentimes maintainers will
|
||||
provide comments on code style and code quality at the same time and will
|
||||
approve a pull request for both.
|
||||
|
||||
Typically the first interaction on a pull request will be an engine maintainer
|
||||
assigning tags to the pull request and flagging it for review by someone
|
||||
familiar with that area of code.
|
||||
|
||||
Engine maintainers are folks who are "members" of the Godot project repository
|
||||
on GitHub and/or are listed on the `Teams page <https://godotengine.org/teams>`_
|
||||
on the Godot website. Maintainers are responsible for a given area of the
|
||||
engine. Typically this means they are the people who are given more trust to
|
||||
approve and recommend pull requests for merging.
|
||||
|
||||
Even if you are not a maintainer, you can still help by reviewing code,
|
||||
providing feedback on PRs and testing PRs locally on your machine to confirm
|
||||
that they work as intended. Many of the currently active maintainers started out
|
||||
doing this before they became maintainers.
|
||||
137
engine/pull_requests/testing.rst
Normal file
137
engine/pull_requests/testing.rst
Normal file
@@ -0,0 +1,137 @@
|
||||
.. _doc_testing_pull_requests:
|
||||
|
||||
Testing pull requests
|
||||
=====================
|
||||
|
||||
Many people are developing new features or fixing bugs on GitHub.
|
||||
To help with engine development, you may be asked to test those pull requests
|
||||
with a Godot build that includes code from the pull request in question.
|
||||
|
||||
Thanks to GitHub Actions, all `pull requests <https://github.com/godotengine/godot/pulls>`__
|
||||
have continuous builds available. These builds let you try out pull requests
|
||||
without having to compile anything from source.
|
||||
|
||||
Downloading a compiled build
|
||||
----------------------------
|
||||
|
||||
You can download pull request builds from GitHub Actions. Since only signed in
|
||||
users may download builds directly from GitHub Actions, the procedure varies
|
||||
depending on whether you have a GitHub account or not.
|
||||
|
||||
.. note::
|
||||
|
||||
Due to a GitHub Actions limitation, builds are only available for 90 days
|
||||
after the pull request was last updated. If you still wish to try a
|
||||
pull request locally, you can
|
||||
:ref:`compile the pull request branch from source <doc_testing_pull_requests_compile>`
|
||||
instead.
|
||||
|
||||
If you have a GitHub account
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Open the pull request page. Click the **Checks** tab near the top of the page:
|
||||
|
||||
.. image:: img/testing_pull_requests_access_checks.webp
|
||||
|
||||
- Click the **Artifacts** dropdown on the right of the page:
|
||||
|
||||
.. image:: img/testing_pull_requests_checks_artifacts.webp
|
||||
|
||||
- In the dropdown, click the artifact's name to download it. Remember to scroll
|
||||
if you cannot see the name of the platform you're looking for:
|
||||
|
||||
.. image:: img/testing_pull_requests_checks_artifacts_list.webp
|
||||
|
||||
- Extract the ZIP archive then run the executable.
|
||||
Note that Windows and macOS binaries are **not** code signed.
|
||||
This means you may have to bypass a security warning before you can run the executable.
|
||||
On Windows, if you frequently test pull request builds, it may be better to disable
|
||||
Windows SmartScreen permanently in the Windows security settings.
|
||||
On macOS, see :ref:`doc_running_on_macos` for instructions on bypassing Gatekeeper.
|
||||
|
||||
If you don't have a GitHub account
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you don't have a GitHub account and can't sign up for one,
|
||||
you can use the third-party `nightly.link <https://nightly.link>`__ service
|
||||
to generate a universal download link.
|
||||
|
||||
- Open the pull request page. Click the *fork*'s branch name near the top of the page:
|
||||
|
||||
.. image:: img/testing_pull_requests_access_fork.png
|
||||
|
||||
- Now that you are on the fork's branch page, click the ``.github`` folder at the top of the file list.
|
||||
Then, click on the ``workflows`` folder (which is inside the ``.github`` folder).
|
||||
Click the workflow file for the platform you wish to download artifacts for.
|
||||
*After* clicking on the file (which opens the file view), copy the page URL from your browser's address bar.
|
||||
|
||||
- Open the `nightly.link <https://nightly.link>`__ website and paste the URL you just copied
|
||||
into the text field located below the heading **Paste a GitHub link, get a nightly.link!**.
|
||||
After pasting the URL, click **Get links** on the right.
|
||||
If the format of the URL you pasted is correct, you should be presented
|
||||
with a page like this:
|
||||
|
||||
.. image:: img/testing_pull_requests_nightly_link.png
|
||||
|
||||
- Click the URL of the artifact you wish to download.
|
||||
|
||||
- Extract the ZIP archive then run the executable.
|
||||
Note that Windows and macOS binaries are not code signed.
|
||||
This means you may have to bypass a security warning before you can run the executable.
|
||||
If you frequently test pull request builds, it may be better to disable
|
||||
Windows SmartScreen or `disable macOS Gatekeeper <https://disable-gatekeeper.github.io/>`__ permanently.
|
||||
|
||||
.. _doc_testing_pull_requests_compile:
|
||||
|
||||
Compiling a pull request branch from source
|
||||
-------------------------------------------
|
||||
|
||||
This approach may be needed for pull requests that were last updated more than
|
||||
90 days ago, or to test on platforms and configurations that are not supported
|
||||
by Godot's GitHub Actions setup.
|
||||
|
||||
Downloading a zipped pull request branch
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- Open the pull request page. Click the *fork*'s branch name near the top of the page:
|
||||
|
||||
.. image:: img/testing_pull_requests_access_fork.png
|
||||
|
||||
- Now that you are on the fork's branch page, click the green **Code** button on the right of the page
|
||||
then choose **Download ZIP** in the dropdown:
|
||||
|
||||
.. image:: img/testing_pull_requests_fork_zip.png
|
||||
|
||||
- Extract the ZIP archive and follow the :ref:`compiling <toc-devel-compiling>` instructions
|
||||
for your operating system.
|
||||
|
||||
Checking out a pull request branch with git
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Alternatively, you can checkout the pull request directly with git:
|
||||
|
||||
- Open the pull request page. Note the pull request *number* (``PR_NUMBER``), and the *branch name*
|
||||
(``BRANCH_NAME``), but without the user name.
|
||||
|
||||
.. image:: img/testing_pull_requests_command_line_checkout.webp
|
||||
|
||||
- Construct the command using this pattern:
|
||||
|
||||
::
|
||||
|
||||
git fetch upstream pull/PR_NUMBER/head:BRANCH_NAME
|
||||
|
||||
So for the pull request above, the actual command will be:
|
||||
|
||||
::
|
||||
|
||||
# Fetch PR branch locally
|
||||
git fetch upstream pull/48734/head:editor_file_dialog_filter_sort
|
||||
|
||||
- Once the pull request finishes downloading, checkout its branch:
|
||||
|
||||
::
|
||||
|
||||
git checkout editor_file_dialog_filter_sort
|
||||
|
||||
- And follow the :ref:`compiling <toc-devel-compiling>` instructions for your operating system.
|
||||
Reference in New Issue
Block a user