All Projects → twisted → Towncrier

twisted / Towncrier

Licence: mit
Building newsfiles for your project.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Towncrier

campr
Campr Workspace App
Stars: ✭ 33 (-90.68%)
Mutual labels:  project-management
Android-Library-Management
Android Library Management Project
Stars: ✭ 32 (-90.96%)
Mutual labels:  project-management
Projectile
Project Interaction Library for Emacs
Stars: ✭ 3,463 (+878.25%)
Mutual labels:  project-management
Meta
Discussions around the processes and coordination of the Bitcoin Design Community
Stars: ✭ 120 (-66.1%)
Mutual labels:  project-management
matorral
An open-source, very simple & extensible project managent tool written using Django/Python
Stars: ✭ 21 (-94.07%)
Mutual labels:  project-management
Counsel Projectile
Ivy UI for Projectile
Stars: ✭ 255 (-27.97%)
Mutual labels:  project-management
kanboard
Kanban project management software
Stars: ✭ 6,484 (+1731.64%)
Mutual labels:  project-management
How To Collaborate On Github
A mini book about collaborating on GitHub
Stars: ✭ 346 (-2.26%)
Mutual labels:  project-management
cantiga
Membership management system that helps non-profit organizations running their projects, written in PHP / Symfony.
Stars: ✭ 20 (-94.35%)
Mutual labels:  project-management
Wookteam
WookTeam是一款轻量级的开源在线团队协作工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,知识库管理等工具。
Stars: ✭ 287 (-18.93%)
Mutual labels:  project-management
acorn
Acorn is a way of organizing intended Goals and Outcomes in tree-like structures. You can think of it as a virtual whiteboard for collaborative planning.
Stars: ✭ 42 (-88.14%)
Mutual labels:  project-management
JirAgileR
User-friendly 🔹JIRA API wrapper. Track projects & issues from within R
Stars: ✭ 22 (-93.79%)
Mutual labels:  project-management
Pmanager
A project management system built using laravel. Watch full video here
Stars: ✭ 260 (-26.55%)
Mutual labels:  project-management
projectforge
micromata.github.io/projectforge/
Stars: ✭ 80 (-77.4%)
Mutual labels:  project-management
Phproject
A high performance full-featured project management system
Stars: ✭ 324 (-8.47%)
Mutual labels:  project-management
DailyScrum
An app for your daily dose of Scrum
Stars: ✭ 18 (-94.92%)
Mutual labels:  project-management
memorable-milestones
A GitHub Action that puts your milestones on auto-pilot, using memorable emoji names 🤖
Stars: ✭ 18 (-94.92%)
Mutual labels:  project-management
Taiga Front
Agile project management platform. Built on top of Django and AngularJS
Stars: ✭ 3,501 (+888.98%)
Mutual labels:  project-management
Awesome Engineering Team Management
👔 How to transition from software development to engineering management
Stars: ✭ 319 (-9.89%)
Mutual labels:  project-management
Free Pmo
Project management software for freelancers or agencies, built with Laravel 5.
Stars: ✭ 264 (-25.42%)
Mutual labels:  project-management

Hear ye, hear ye, says the towncrier

.. image:: https://img.shields.io/github/workflow/status/twisted/towncrier/CI/master :alt: GitHub Actions :target: https://github.com/twisted/towncrier/actions?query=branch%3Amaster

.. image:: https://img.shields.io/codecov/c/github/twisted/towncrier/master :alt: Codecov :target: https://app.codecov.io/gh/twisted/towncrier/branch/master

towncrier is a utility to produce useful, summarised news files for your project. Rather than reading the Git history as some newer tools to produce it, or having one single file which developers all write to, towncrier reads "news fragments" which contain information useful to end users.

Philosophy

towncrier delivers the news which is convenient to those that hear it, not those that write it.

That is, by duplicating what has changed from the "developer log" (which may contain complex information about the original issue, how it was fixed, who authored the fix, and who reviewed the fix) into a "news fragment" (a small file containing just enough information to be useful to end users), towncrier can produce a digest of the changes which is valuable to those who may wish to use the software. These fragments are also commonly called "topfiles" or "newsfiles" in Twisted parlance.

towncrier works best in a development system where all merges involve closing a ticket.

Quick Start

Install from PyPI::

python3 -m pip install towncrier

.. note::

towncrier, as a command line tool, works on Python 3.5+ only. It is usable by projects written in other languages, provided you specify the project version either in the configuration file or on the command line. For Python 2/3 compatible projects, the version can be discovered automatically.

In your project root, add a towncrier.toml or a pyproject.toml file (if both files exist, the first will take precedence). You can configure your project in two ways. To configure it via an explicit directory, add:

.. code-block:: ini

[tool.towncrier]
directory = "changes"

Alternatively, to configure it relative to a (Python) package directory, add:

.. code-block:: ini

[tool.towncrier]
package = "mypackage"
package_dir = "src"
filename = "NEWS.rst"

For the latter, news fragments (see "News Fragments" below) should be in a newsfragments directory under your package. Using the above example, your news fragments would be src/myproject/newsfragments/).

.. tip::

To prevent git from removing the ``newsfragments`` directory, make a ``.gitignore`` file in it with::

    !.gitignore

This will keep the folder around, but otherwise "empty".

towncrier needs to know what version your project is, and there are three ways you can give it:

  • For Python 2/3 compatible projects, a __version__ in the top level package. This can be either a string literal, a tuple, or an Incremental <https://github.com/hawkowl/incremental>_ version.

  • Manually passing --version=<myversionhere> when interacting with towncrier.

  • Definining a version option in a configuration file:

.. code-block:: ini

[tool.towncrier]
# ...
version = "1.2.3"  # project version if maintained separately

To create a new news fragment, use the towncrier create command. For example::

towncrier create 123.feature

To produce a draft of the news file, run::

towncrier build --draft

To produce the news file for real, run::

towncrier build

This command will remove the news files (with git rm) and append the built news to the filename specified by the filename configuration option, and then stage the news file changes (with git add). It leaves committing the changes up to the user.

If you wish to have content at the top of the news file (for example, to say where you can find the tickets), put your text above a rST comment that says::

.. towncrier release notes start

towncrier will then put the version notes after this comment, and leave your existing content that was above it where it is.

News Fragments

towncrier has a few standard types of news fragments, signified by the file extension. These are:

  • .feature: Signifying a new feature.
  • .bugfix: Signifying a bug fix.
  • .doc: Signifying a documentation improvement.
  • .removal: Signifying a deprecation or removal of public API.
  • .misc: A ticket has been closed, but it is not of interest to users.

The start of the filename is the ticket number, and the content is what will end up in the news file. For example, if ticket #850 is about adding a new widget, the filename would be myproject/newsfragments/850.feature and the content would be myproject.widget has been added.

Further Options

Towncrier has the following global options, which can be specified in the toml file:

.. code-block:: ini

[tool.towncrier]
package = ""
package_dir = "."
single_file = true  # if false, filename is formatted like `title_format`.
filename = "NEWS.rst"
directory = "directory/of/news/fragments"
version = "1.2.3"  # project version if maintained separately
name = "arbitrary project name"
template = "path/to/template.rst"
start_string = "Text used to detect where to add the generated content in the middle of a file. Generated content added after this text. Newline auto added."
title_format = "{name} {version} ({project_date})"  # or false if template includes title
issue_format = "format string for {issue} (issue is the first part of fragment name)"
underlines: "=-~"
wrap = false  # Wrap text to 79 characters
all_bullets = true  # make all fragments bullet points

If a single file is used, the content of that file gets overwritten each time.

If title_format is unspecified or an empty string, the default format will be used. If set to false, no title will be created. This can be useful if the specified template creates the title itself.

Furthermore, you can add your own fragment types using:

.. code-block:: ini

[tool.towncrier]
[[tool.towncrier.type]]
directory = "deprecation"
name = "Deprecations"
showcontent = true
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].