Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 33 additions & 10 deletions admin_manual/issues/applying_patch.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,60 @@
Patching Nextcloud
==================

Obtaining a patch
-----------------

If you found a related pull request on GitHub that solves your issue, or you want to help developers and verify a fix works, you can get a patch for the pull request.

1. Using https://github.com/nextcloud/server/pull/26396 as an example.
2. Append ``.diff`` to the URL: https://github.com/nextcloud/server/pull/26396.diff
3. Download the patch to your server e.g. via ``wget https://github.com/nextcloud/server/pull/26396.diff`` (this will place ``26396.diff`` in the local directory)
4. Follow the `Applying a patch`_ steps.
5. If you are on an older Nextcloud version, you might first need to go to the correct backported patch for your version.

.. image:: images/getting-a-patch-from-github.png
:alt: backportbot-nextcloud linking to the pull request for an older version.

6. You can find the appropriate version by looking for a link posted by ``backportbot-nextcloud`` to the backport pull request for your release, or by checking for a developer comment with a manual backport link. Use the ``.diff`` URL of that backport PR.

Applying a patch
----------------

Patching server
^^^^^^^^^^^^^^^

1. Navigate into your Nextcloud server's root directory (contains the ``status.php`` file)
2. Now apply the patch with the following command::
1. Navigate to your Nextcloud server's root directory (the one that contains the ``status.php`` file).
2. Download the patch to your server e.g. via ``wget https://github.com/nextcloud/server/pull/26396.diff`` (this will place ``26396.diff`` in the local directory)
3. Apply the patch with the following command::

patch -p 1 < /path/to/the/file.patch
patch -p 1 < ./26396.diff

.. note::
4. Alternatively, if the patch command is not available, use::

There can be errors about not found files, especially when you take a patch from GitHub there might be development or test files included in the patch. when the files are in build/ or a tests/ subdirectory it is mostly being
git apply --check ./26396.diff
git apply ./26396.diff

Patching apps
^^^^^^^^^^^^^

1. Navigate to the root of this app (mostly ``apps/[APPID]/``), if you can not find the app there use the ``sudo -E -u www-data php occ app:getpath APPID`` command to find the path.
2. Now apply the patch with the same command as in `Patching server`_
1. Navigate to the root of the app (usually ``apps/[APPID]/``). If you cannot find the app there, use the ``sudo -E -u www-data php occ app:getpath APPID`` command to find the path.
2. Download the patch to your server e.g. via ``wget https://github.com/nextcloud/<app>/pull/26396.diff`` (this will place ``26396.diff`` in the local directory)
3. Apply the patch with the same command as in `Patching server`_.

Reverting a patch
-----------------

1. Navigate to the directory where you applied the patch.
2. Now revert the patch with the ``-R`` option::

patch -R -p 1 < /path/to/the/file.patch
patch -R -p 1 < ./26396.diff

3. Alternatively, if the patch command is not available, use::

git apply --reverse ./26396.diff

Getting a patch from a GitHub pull request
------------------------------------------
Notes and troubleshooting
-------------------------

If you found a related pull request on GitHub that solves your issue, or you want to help developers and verify a fix works, you can get a patch for the pull request.

Expand Down