You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/development/development.rst
+49Lines changed: 49 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -397,3 +397,52 @@ After this you need to add a block in `Install Sorters <https://github.com/Spike
397
397
to describe your sorter.
398
398
399
399
Finally, make a pull request so we can review the code and incorporate into the sorters module of SpikeInterface!
400
+
401
+
402
+
403
+
How to make a release
404
+
---------------------
405
+
406
+
Checklist
407
+
^^^^^^^^^
408
+
* pyproject.toml: check that the version is ahead of current release. Also, comment out the @ (git dependencies)
409
+
* In the top level ``__init__`` (located at ``src/spikeinterface/__init__.py``) set ``DEV_MODE`` to ``False`` (this is used for the docker installations)
410
+
* Create a new release note for the appropriate version on doc/releases/new_version_tag.
411
+
412
+
There can be large releases like:
413
+
414
+
``doc/releases/0.101.0.rst``
415
+
416
+
Which contain a section called "Main Changes" and minor releases which include only bug fixes like:
417
+
418
+
``doc/releases/0.101.2.rst``
419
+
420
+
To collect all the PRs and bug fixes we have a script in:
421
+
``doc/scripts/``
422
+
called ``auto-release-notes.sh``. Run it with ``bash auto-release-notes.sh`` and it will create the release notes for the module specific changes.
423
+
424
+
The first time you run the script, GitHub will guide you through an authorization process if you've not already done so.
425
+
426
+
The signature of the script is:
427
+
428
+
.. code-block:: bash
429
+
430
+
bash auto-release-notes.sh <start_date><end_date>
431
+
432
+
Where the start date is the date of the last release and the end date is the current date. Dates are in YYYY-MM-DD format
433
+
434
+
The date of the last release can be found on `PyPI <https://pypi.org/project/spikeinterface/>`_.
435
+
436
+
437
+
As a specific example:
438
+
.. code-block:: bash
439
+
440
+
bash auto-release-notes.sh 2025-02-19 2025-03-24
441
+
442
+
* Finish the release notes and merge
443
+
* Locally tag the main branch with the newly merged release notes with the new version
444
+
* Push the tag to the remote repository which will trigger the release action (.github/workflows/publish-to-pypi.yml)
445
+
* Do an after-release `PR <https://github.com/SpikeInterface/spikeinterface/pull/3828/files>`_:
446
+
- Uncomment the git installs in pyproject
447
+
- Set ``DEV_MODE`` to ``True`` in the top level ``__init__`` (located at ``src/spikeinterface/__init__.py``)
448
+
- Update `pyproject.toml` version one patch ahead or one minor if it is larger one.
0 commit comments