{"id":15038585,"url":"https://github.com/wetransfer/gitbuddy","last_synced_at":"2025-04-12T18:39:33.459Z","repository":{"id":40482248,"uuid":"233013943","full_name":"WeTransfer/GitBuddy","owner":"WeTransfer","description":"Your buddy in managing and maintaining GitHub repositories, and releases. Automatically generate changelogs from issues and merged pull-requests.","archived":false,"fork":false,"pushed_at":"2024-12-11T15:06:43.000Z","size":430,"stargazers_count":245,"open_issues_count":10,"forks_count":15,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-03T20:12:17.927Z","etag":null,"topics":["changelog-generator","command-line-tool","release-automation","release-management","swift","swift-package-manager","wt-branch-protection-exempt","wt-branch-protection-two-approvals"],"latest_commit_sha":null,"homepage":"https://www.wetransfer.com","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WeTransfer.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-10T09:36:05.000Z","updated_at":"2025-02-25T20:21:54.000Z","dependencies_parsed_at":"2022-08-09T23:40:08.652Z","dependency_job_id":"17a783cb-4b5d-4c4e-84a6-7d56d4371381","html_url":"https://github.com/WeTransfer/GitBuddy","commit_stats":{"total_commits":90,"total_committers":12,"mean_commits":7.5,"dds":0.4666666666666667,"last_synced_commit":"83a25b4a447c27ea55e634976d354edf5238d36f"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTransfer%2FGitBuddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTransfer%2FGitBuddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTransfer%2FGitBuddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WeTransfer%2FGitBuddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WeTransfer","download_url":"https://codeload.github.com/WeTransfer/GitBuddy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248616242,"owners_count":21134033,"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-generator","command-line-tool","release-automation","release-management","swift","swift-package-manager","wt-branch-protection-exempt","wt-branch-protection-two-approvals"],"created_at":"2024-09-24T20:39:03.168Z","updated_at":"2025-04-12T18:39:33.408Z","avatar_url":"https://github.com/WeTransfer.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitBuddy\nYour buddy in managing and maintaining GitHub repositories.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://app.bitrise.io/app/257a09239a13f301.svg?token=1iMSavdhOwGWKuYtK9fgoQ\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/language-swift5.1-f48041.svg?style=flat\"/\u003e\n\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg?style=flat\"/\u003e\n\u003c/p\u003e\n\nGitBuddy helps you with:\n\n- [x] Generating a changelog\n- [x] Converting a tag into a GitHub release with a changelog attached\n- [x] Commenting on issues and PRs when a releases contained the related code changes\n\n### Generating a changelog\n```\n$ gitbuddy changelog --help\nOVERVIEW: Create a changelog for GitHub repositories\n\nUSAGE: gitbuddy changelog [--since-tag \u003csince-tag\u003e] [--base-branch \u003cbase-branch\u003e] [--sections] [--verbose]\n\nOPTIONS:\n  -s, --since-tag \u003csince-tag\u003e\n                          The tag to use as a base. Defaults to the latest tag.\n  -b, --base-branch \u003cbase-branch\u003e\n                          The base branch to compare with. Defaults to master.\n  --sections              Whether the changelog should be split into sections. Defaults to false.\n  --verbose               Show extra logging for debugging purposes\n  -h, --help              Show help information.\n```\n\nThis command generates a changelog based on merged PRs and fixed issues. Once a PR contains a reference like `\"Fixed #30\"`, the title of issue 30 will be included in the changelog. Otherwise, the Pull Request title will be used.\n\nPull requests that are merged into the `baseBranch` will be used as input for the changelog. Only pull requests that are merged after the creation date of the `sinceTag` are taken as input.\n\n#### A Changelog example\nThis is an example taken from [Mocker](https://github.com/WeTransfer/Mocker/releases/tag/2.0.1)\n\n----\n\n- Switch over to Danger-Swift \u0026 Bitrise ([#34](https://github.com/WeTransfer/Mocker/pull/34)) via @AvdLee\n- Fix important mismatch for getting the right mock ([#31](https://github.com/WeTransfer/Mocker/pull/31)) via @AvdLee\n\n----\n\nIf you'd like a changelog to link to issues closed before a release was tagged, pass the `--sections` argument, then it's going to look like this:\n\n----\n\n**Closed issues:**\n\n- Can SPM support be merged branch add-spm-support be merged to master? ([#33](https://github.com/WeTransfer/Mocker/pull/33))\n- migrate 2.0.0 changes to spm compatible branch `feature/add-spm-support`? ([#32](https://github.com/WeTransfer/Mocker/pull/32))\n\n**Merged pull requests:**\n\n- Switch over to Danger-Swift \u0026 Bitrise ([#34](https://github.com/WeTransfer/Mocker/pull/34)) via @AvdLee\n- Fix important mismatch for getting the right mock ([#31](https://github.com/WeTransfer/Mocker/pull/31)) via @AvdLee\n\n----\n\n### Generating a release\n```\n$ gitbuddy release --help\nOVERVIEW: Create a new release including a changelog and publish comments on related issues.\n\nUSAGE: gitbuddy release [--changelog-path \u003cchangelog-path\u003e] [--skip-comments] [--use-pre-release] [--target-commitish \u003ctarget-commitish\u003e] [--tag-name \u003ctag-name\u003e] [--release-title \u003crelease-title\u003e] [--last-release-tag \u003clast-release-tag\u003e] [--base-branch \u003cbase-branch\u003e] [--sections] [--verbose]\n\nOPTIONS:\n  -c, --changelog-path \u003cchangelog-path\u003e\n                          The path to the Changelog to update it with the latest changes.\n  -s, --skip-comments     Disable commenting on issues and PRs about the new release.\n  -p, --use-pre-release   Create the release as a pre-release.\n  -t, --target-commitish \u003ctarget-commitish\u003e\n                          Specifies the commitish value that determines where the Git tag is created\n                          from. Can be any branch or commit SHA. Unused if the Git tag already exists.\n                          Default: the repository's default branch (usually master).\n  -n, --tag-name \u003ctag-name\u003e\n                          The name of the tag. Default: takes the last created tag to publish as a GitHub\n                          release.\n  -r, --release-title \u003crelease-title\u003e\n                          The title of the release. Default: uses the tag name.\n  -l, --last-release-tag \u003clast-release-tag\u003e\n                          The last release tag to use as a base for the changelog creation. Default:\n                          previous tag.\n  -b, --base-branch \u003cbase-branch\u003e\n                          The base branch to compare with for generating the changelog. Defaults to\n                          master.\n  --sections              Whether the changelog should be split into sections. Defaults to false.\n  --verbose               Show extra logging for debugging purposes\n  -h, --help              Show help information.\n```\n\nThe `release` command can be used to transform the latest tag into a GitHub release including the changelog as a body.\nThe changelog is generated from all the changes between the latest and previous tag.\n\n#### Updating the changelog file\nThe changelog is appended to the beginning of the changelog file if a `changelogPath` is passed. It's most commonly set to `Changelog.md`.\nIt's best to use this on a release branch so you can commit the changes and open a PR.\n\n#### Post comments\nA great feature of this release command is the automation of posting comments to issues and PRs that are released with this release.\n\n**A comment posted on an issue**\n![](Assets/issue_comment.png)\n\n**A comment posted on a pull request**\n![](Assets/pr_comment.png)\n\n### Installation using [Mint](https://github.com/yonaskolb/mint)\nYou can install GitBuddy using Mint as follows:\n\n```\n$ mint install WeTransfer/GitBuddy\n```\n\n[Setup a personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line) with the scope set to `repo` only. Add this token as an environment variable `GITBUDDY_ACCESS_TOKEN` by combining your GitHub username with the token:\n\n```ruby\nexport GITBUDDY_ACCESS_TOKEN=\"\u003cusername\u003e:\u003caccess_token\u003e\"\n```\n\nThe token is used with the GitHub API and uses Basic HTTP authentication.\n\nAfter that you can directly use it by executing it from within the repo you would like to work with:\n\n```\n$ gitbuddy --help\nOVERVIEW: Manage your GitHub repositories with ease\n\nUSAGE: gitbuddy [--version] \u003csubcommand\u003e\n\nOPTIONS:\n  --version               Prints the current GitBuddy version\n  -h, --help              Show help information.\n\nSUBCOMMANDS:\n  changelog               Create a changelog for GitHub repositories\n  release                 Create a new release including a changelog and publish comments on related issues.\n```\n\n### Development\n- `cd` into the repository\n- open the `Package.swift` file\n- Run the following command from the project you're using it for:\n\n```bash\nswift run --package-path ../GitBuddy/ GitBuddy --help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwetransfer%2Fgitbuddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwetransfer%2Fgitbuddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwetransfer%2Fgitbuddy/lists"}