{"id":15003468,"url":"https://github.com/barseghyanartur/matyan","last_synced_at":"2025-06-21T05:07:39.377Z","repository":{"id":57440163,"uuid":"222180629","full_name":"barseghyanartur/matyan","owner":"barseghyanartur","description":"Generate change log from Git commits","archived":false,"fork":false,"pushed_at":"2020-02-09T20:56:42.000Z","size":860,"stargazers_count":3,"open_issues_count":9,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-08T21:57:09.640Z","etag":null,"topics":["changelog","changelog-generator","dtap","git","jira"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/matyan/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barseghyanartur.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE_GPL2.0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-17T01:17:08.000Z","updated_at":"2025-04-09T14:44:30.000Z","dependencies_parsed_at":"2022-09-26T17:21:00.045Z","dependency_job_id":null,"html_url":"https://github.com/barseghyanartur/matyan","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/barseghyanartur/matyan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barseghyanartur%2Fmatyan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barseghyanartur%2Fmatyan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barseghyanartur%2Fmatyan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barseghyanartur%2Fmatyan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barseghyanartur","download_url":"https://codeload.github.com/barseghyanartur/matyan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barseghyanartur%2Fmatyan/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261066571,"owners_count":23104772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["changelog","changelog-generator","dtap","git","jira"],"created_at":"2024-09-24T18:58:35.664Z","updated_at":"2025-06-21T05:07:34.365Z","avatar_url":"https://github.com/barseghyanartur.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"======\nMatyan\n======\nGenerate changelog from Git commits.\n\n.. image:: https://img.shields.io/pypi/v/matyan.svg\n   :target: https://pypi.python.org/pypi/matyan\n   :alt: PyPI Version\n\n.. image:: https://img.shields.io/pypi/pyversions/matyan.svg\n    :target: https://pypi.python.org/pypi/matyan/\n    :alt: Supported Python versions\n\n.. image:: https://img.shields.io/travis/barseghyanartur/matyan/master.svg\n   :target: http://travis-ci.org/barseghyanartur/matyan\n   :alt: Build Status\n\n.. image:: https://img.shields.io/badge/license-GPL--2.0--only%20OR%20LGPL--2.1--or--later-blue.svg\n   :target: https://github.com/barseghyanartur/matyan/#License\n   :alt: GPL-2.0-only OR LGPL-2.1-or-later\n\n.. image:: https://coveralls.io/repos/github/barseghyanartur/matyan/badge.svg?branch=master\u0026service=github\n    :target: https://coveralls.io/github/barseghyanartur/matyan?branch=master\n    :alt: Coverage\n\nPrerequisites\n=============\n- Python 3.6, 3.7 and 3.8\n\nDocumentation\n=============\nDocumentation is available on `Read the Docs\n\u003chttp://matyan.readthedocs.io/\u003e`_.\n\nInstallation\n============\nLatest stable version on PyPI:\n\n.. code-block:: sh\n\n    pip install matyan\n\nUsage\n=====\nBasic usage\n-----------\nSee `Basic concepts \u003chttps://matyan.readthedocs.io/en/latest/basic_concepts.html\u003e`_\nsection to get impression on possible commit methodology and assumptions taken.\n\n**Generate changelog:**\n\n.. code-block:: sh\n\n    generate-changelog\n\n**Generate changelog skipping orphaned commits:**\n\nIn some cases you would only want to show what has been done with tickets and\nskip all non-ticket related commits.\n\n.. code-block:: sh\n\n    generate-changelog --no-other\n\n**Generate changelog between two releases:**\n\nIn other cases you would want to show what has been done since last release.\nThe following example would generate changelog since version 0.0.1 to\nversion 0.0.3.\n\n.. code-block:: sh\n\n    generate-changelog 0.0.1..0.0.3\n\n**Generate changelog between two branches:**\n\nSometimes you just need to show the changes made on acceptance since last\nproduction release.\nThe following example would generate changelog with changes that are on\nacceptance branch and not yet in master.\n\n.. code-block:: sh\n\n    generate-changelog master..acceptance\n\n**Generate changelog with releases info shown**\n\n.. code-block:: sh\n\n    generate-changelog --show-releases\n\n**Generate changelog between releases with releases info shown**\n\n.. code-block:: sh\n\n    generate-changelog 0.0.1..0.0.3 --show-releases\n\n**Generate changelog between branches with releases info shown**\n\n.. code-block:: sh\n\n    generate-changelog master..dev --show-releases\n\n**Generate changelog for the latest release with releases info shown**\n\n.. code-block:: sh\n\n    generate-changelog --latest-release --show-releases\n\n**Generate changelog with headings only (no commit messages) and releases info shown**\n\n.. code-block:: sh\n\n    generate-changelog --headings-only --show-releases\n\n**Generate changelog between two branches, show unreleased changes only:**\n\n.. code-block:: sh\n\n    generate-changelog master..acceptance --show-releases --unreleased-only\n\nRendering\n---------\nThe following renderers are implemented:\n\n- Markdown\n- RestructuredText\n- Historical Markdown (for compatibility with ``matyan`` versions prior to\n  0.4).\n\nMarkdown\n~~~~~~~~\n.. code-block:: sh\n\n    generate-changelog --show-releases --renderer=markdown\n\nRestructuredText\n~~~~~~~~~~~~~~~~\n.. code-block:: sh\n\n    generate-changelog --show-releases --renderer=rest\n\nHistorical Markdown\n~~~~~~~~~~~~~~~~~~~\n.. code-block:: sh\n\n    generate-changelog --show-releases --renderer=historical-markdown\n\nJira integration\n----------------\nIt's possible to fetch ticket title and description from Jira. In order for it\nto work, you should provide a ``fetch-title`` and ``fetch-description``\narguments.\n\nThe following needs to be added to your ``.matyan.ini``:\n\n.. code-block:: text\n\n    [Settings]\n    fetchDataFrom=Jira\n\nIn addition to that, you should put valid Jira credentials into your\nglobal ``.matyan.ini`` configuration file.\n\nCommand to run:\n\n.. code-block:: sh\n\n    generate-changelog --show-releases --fetch-title --fetch-description\n\nHave in mind, that ``matyan`` shall be installed with ``jira`` option.\n\n.. code-block:: sh\n\n    pip install matyan[jira]\n\nAlternatively, make sure ``atlassian-python-api`` is installed.\n\n.. code-block:: sh\n\n    pip install atlassian-python-api\n\nExamples\n--------\nSee the\n`output \u003chttps://github.com/barseghyanartur/matyan/tree/master/src/matyan/tests/output\u003e`_\ndirectory for examples.\n\nAdditionally see the `Jupyter notebook examples \u003chttps://github.com/barseghyanartur/matyan/blob/master/matyan.ipynb\u003e`_.\n\nConfiguration\n=============\nIn order to customize names and texts, add a ``.matyan.ini`` in your\nproject directory, from which you will be running the ``generate-changelog``\ncommand.\n\nSample configuration:\n\n.. code-block:: text\n\n    [BranchTypes]\n    feature: Feature\n    bugfix: Bugfix\n    hotfix: Hotfix\n    deprecation: Deprecation\n\n    [OtherBranchType]\n    other: Other\n\n    [Unreleased]\n    unreleased: Unreleased\n\n    [IgnoreCommits]\n    exact: more\n           clean up\n           code comments\n           more on docs\n           repo\n           working\n           more on\n           wip\n           commit\n    prefix: more on\n            continue on\n\n\nNote, that placing ``.matyan.ini`` into the home root will make that\nconfiguration global for all projects. That however could be handy, since local\n``.matyan.ini`` files simply extend the global ones. For example, you could\nuse global configuration for storing Jira credentials.\n\n.. code-block:: text\n\n    [Jira]\n    url:https://barseghyanartur.atlassian.net/\n    username:user@domain.com\n    token:abcd1234\n\nNote, however, that sections are copied over entirely.\n\nTips and tricks\n===============\nWrite to file\n-------------\n.. code-block:: sh\n\n    generate-changelog --show-releases 2\u003e\u00261 | tee changelog.md\n\nCreate initial config file\n--------------------------\n\n.. code-block:: sh\n\n    matyan-make-config\n\nTesting\n=======\nSimply type:\n\n.. code-block:: sh\n\n    ./runtests.py\n\nOr use tox:\n\n.. code-block:: sh\n\n    tox\n\nOr use tox to check specific env:\n\n.. code-block:: sh\n\n    tox -e py38\n\nDebugging\n=========\nSometimes checking logs could be handy. ``Matyan`` logs are stored in the\ndirectory, from which you are running the ``generate-changelog`` (or any\nother ``Matyan``) command.\n\nUpdate your ``.matyan.ini`` configuration in the following way:\n\n.. code-block:: text\n\n    [Settings]\n    debug=true\n\n.. code-block:: sh\n\n    tail -f /path/to/your/project/matyan.log\n\nIf you want to modify current logging, use ``MATYAN_LOGGING_CONFIG``\nenvironment variable.\n\nDefault configuration:\n\n.. code-block:: python\n\n    DEFAULT_LOGGING_CONFIG = {\n        'version': 1,\n        'disable_existing_loggers': False,\n        'root': {\n            'level': 'WARNING',\n            'handlers': ['file'],\n        },\n        'formatters': {\n            'verbose': {\n                'format': '{levelname} {asctime} {module} {process:d} {thread:d} '\n                          '{message}',\n                'style': '{',\n            },\n            'simple': {\n                'format': '{levelname} {message}',\n                'style': '{',\n            },\n        },\n        'handlers': {\n            'console': {\n                'level': 'WARNING',\n                'class': 'logging.StreamHandler',\n                'formatter': 'simple'\n            },\n            'file': {\n                'level': 'WARNING',\n                'class': 'logging.handlers.RotatingFileHandler',\n                'filename': os.path.join(os.getcwd(), \"matyan.log\"),\n                'maxBytes': 1048576,\n                'backupCount': 99,\n                'formatter': 'verbose',\n            },\n        },\n        'loggers': {\n            'matyan': {\n                'handlers': ['file'],\n                'propagate': True,\n            },\n        },\n    }\n\nWriting documentation\n=====================\n\nKeep the following hierarchy.\n\n.. code-block:: text\n\n    =====\n    title\n    =====\n\n    header\n    ======\n\n    sub-header\n    ----------\n\n    sub-sub-header\n    ~~~~~~~~~~~~~~\n\n    sub-sub-sub-header\n    ^^^^^^^^^^^^^^^^^^\n\n    sub-sub-sub-sub-header\n    ++++++++++++++++++++++\n\n    sub-sub-sub-sub-sub-header\n    **************************\n\nLicense\n=======\nGPL-2.0-only OR LGPL-2.1-or-later\n\nSupport\n=======\nFor any issues contact me at the e-mail given in the `Author`_ section.\n\nAuthor\n======\nArtur Barseghyan \u003cartur.barseghyan@gmail.com\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarseghyanartur%2Fmatyan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarseghyanartur%2Fmatyan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarseghyanartur%2Fmatyan/lists"}