• Stars
    star
    240
  • Rank 168,229 (Top 4 %)
  • Language
    Swift
  • License
    Other
  • Created almost 5 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Your buddy in managing and maintaining GitHub repositories, and releases. Automatically generate changelogs from issues and merged pull-requests.

GitBuddy

Your buddy in managing and maintaining GitHub repositories.

GitBuddy helps you with:

  • Generating a changelog
  • Converting a tag into a GitHub release with a changelog attached
  • Commenting on issues and PRs when a releases contained the related code changes

Generating a changelog

$ gitbuddy changelog --help
OVERVIEW: Create a changelog for GitHub repositories

USAGE: gitbuddy changelog [--since-tag <since-tag>] [--base-branch <base-branch>] [--sections] [--verbose]

OPTIONS:
  -s, --since-tag <since-tag>
                          The tag to use as a base. Defaults to the latest tag.
  -b, --base-branch <base-branch>
                          The base branch to compare with. Defaults to master.
  --sections              Whether the changelog should be split into sections. Defaults to false.
  --verbose               Show extra logging for debugging purposes
  -h, --help              Show help information.

This 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.

Pull 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.

A Changelog example

This is an example taken from Mocker


  • Switch over to Danger-Swift & Bitrise (#34) via @AvdLee
  • Fix important mismatch for getting the right mock (#31) via @AvdLee

If 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:


Closed issues:

  • Can SPM support be merged branch add-spm-support be merged to master? (#33)
  • migrate 2.0.0 changes to spm compatible branch feature/add-spm-support? (#32)

Merged pull requests:

  • Switch over to Danger-Swift & Bitrise (#34) via @AvdLee
  • Fix important mismatch for getting the right mock (#31) via @AvdLee

Generating a release

$ gitbuddy release --help
OVERVIEW: Create a new release including a changelog and publish comments on related issues.

USAGE: gitbuddy release [--changelog-path <changelog-path>] [--skip-comments] [--use-pre-release] [--target-commitish <target-commitish>] [--tag-name <tag-name>] [--release-title <release-title>] [--last-release-tag <last-release-tag>] [--base-branch <base-branch>] [--sections] [--verbose]

OPTIONS:
  -c, --changelog-path <changelog-path>
                          The path to the Changelog to update it with the latest changes.
  -s, --skip-comments     Disable commenting on issues and PRs about the new release.
  -p, --use-pre-release   Create the release as a pre-release.
  -t, --target-commitish <target-commitish>
                          Specifies the commitish value that determines where the Git tag is created
                          from. Can be any branch or commit SHA. Unused if the Git tag already exists.
                          Default: the repository's default branch (usually master).
  -n, --tag-name <tag-name>
                          The name of the tag. Default: takes the last created tag to publish as a GitHub
                          release.
  -r, --release-title <release-title>
                          The title of the release. Default: uses the tag name.
  -l, --last-release-tag <last-release-tag>
                          The last release tag to use as a base for the changelog creation. Default:
                          previous tag.
  -b, --base-branch <base-branch>
                          The base branch to compare with for generating the changelog. Defaults to
                          master.
  --sections              Whether the changelog should be split into sections. Defaults to false.
  --verbose               Show extra logging for debugging purposes
  -h, --help              Show help information.

The release command can be used to transform the latest tag into a GitHub release including the changelog as a body. The changelog is generated from all the changes between the latest and previous tag.

Updating the changelog file

The changelog is appended to the beginning of the changelog file if a changelogPath is passed. It's most commonly set to Changelog.md. It's best to use this on a release branch so you can commit the changes and open a PR.

Post comments

A great feature of this release command is the automation of posting comments to issues and PRs that are released with this release.

A comment posted on an issue

A comment posted on a pull request

Installation using Mint

You can install GitBuddy using Mint as follows:

$ mint install WeTransfer/GitBuddy

Setup a personal access token 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:

export GITBUDDY_ACCESS_TOKEN="<username>:<access_token>"

The token is used with the GitHub API and uses Basic HTTP authentication.

After that you can directly use it by executing it from within the repo you would like to work with:

$ gitbuddy --help
OVERVIEW: Manage your GitHub repositories with ease

USAGE: gitbuddy [--version] <subcommand>

OPTIONS:
  --version               Prints the current GitBuddy version
  -h, --help              Show help information.

SUBCOMMANDS:
  changelog               Create a changelog for GitHub repositories
  release                 Create a new release including a changelog and publish comments on related issues.

Development

  • cd into the repository
  • open the Package.swift file
  • Run the following command from the project you're using it for:
swift run --package-path ../GitBuddy/ GitBuddy --help

More Repositories

1

WeScan

Document Scanning Made Easy for iOS
Swift
2,825
star
2

Mocker

Mock Alamofire and URLSession requests without touching your code implementation
Swift
1,096
star
3

Diagnostics

Allow users to easily share Diagnostics with your support team to improve the flow of fixing bugs.
Swift
939
star
4

UINotifications

Present custom in-app notifications easily in Swift
Swift
394
star
5

zip_tricks

[DEPRECATED] Compact ZIP file writing/reading for Ruby, for streaming applications
Ruby
349
star
6

WeTransfer-iOS-CI

Containing all the shared CI logic for WeTransfer repositories
Swift
223
star
7

prorate

Redis-based rate limiter (with a leaky bucket implementation in Lua)
Ruby
86
star
8

wt_activerecord_index_spy

A gem to spy queries running with Active Record and report missing indexes
Ruby
77
star
9

format_parser

file metadata parsing, done cheap
Ruby
62
star
10

wt-js-sdk

A JavaScript SDK for WeTransfer's Public API
JavaScript
47
star
11

WeTransfer-Swift-SDK

A Swift SDK for WeTransferโ€™s public API
Swift
39
star
12

Sketch-Plugin

Plugin to share artboards directly via WeTransfer. Share the link easily with your colleagues and friends.
Objective-C
39
star
13

sqewer

SQS queue processor engine
Ruby
30
star
14

wt_s3_signer

Fast S3 key urls signing
Ruby
26
star
15

cr_zip_tricks

Alternate ZIP writer for Crystal, ported from zip_tricks for Ruby
Crystal
25
star
16

image_vise

Image processing proxy that works via signed URLs
Ruby
20
star
17

ghost_adapter

Run ActiveRecord migrations through gh-ost
Ruby
19
star
18

concorde.js

A sexy pinnacle of engineering thatโ€™s nonetheless incredibly inefficient and expensive and goes out of business because it canโ€™t find enough use. It also provides some tools to deal with the browser.
JavaScript
17
star
19

fast_send

Send very large HTTP responses via file buffers
Ruby
16
star
20

apiculture

Honey-tasting REST API toolkit for Sinatra
Ruby
12
star
21

WeScanAndroid

The Android Implementation of WeScan https://github.com/wetransfer/wescan
11
star
22

wetransfer_ruby_sdk

A Ruby SDK for WeTransfer's Public API
Ruby
11
star
23

richurls

Service which enriches URLs fast and cheap
Ruby
10
star
24

measurometer

Minimum viable API for โฑ๐Ÿ“ˆ in ๐Ÿ’Ž libraries
Ruby
10
star
25

interval_response

Serve partial (Range) HTTP responses from ๐Ÿ’Ž applications
Ruby
9
star
26

activerecord_autoreplica

Simple read replica proxy for ActiveRecord
Ruby
7
star
27

wt-api-docs

Official documentation for WeTransfer's Public API
Ruby
7
star
28

product-engineering-career-framework

This repo holds discussion and the permalink to WeTransfer's internal Product Engineering Career Framework.
7
star
29

hash_tools

Do useful things to Ruby Hashes, without monkey-patches
Ruby
5
star
30

rational_choice

A fuzzy logic gate
Ruby
4
star
31

Xperiments

Simple A/B testing tool. Includes CMS and an experimentation engine.
JavaScript
4
star
32

amplitude-client-node

Node.js client for the Amplitude API
TypeScript
4
star
33

Danger

Contains our global Danger file.
Ruby
3
star
34

very_tiny_state_machine

For when you need it even smaller than you think you do
Ruby
3
star
35

eslint-config-wetransfer

ESLint shareable config used for WeTransfer JS projects.
JavaScript
3
star
36

wetransfer_style

At WeTransfer we code in style. This is our coding style for Ruby development.
Ruby
3
star
37

runaway

Controls child process execution, with hard limits on maximum runtime and heartbeat timings
Ruby
2
star
38

megabytes

Tiny byte size formatter
Ruby
1
star
39

Actions-Experiment

A Repo to experiment with github actions to build previews for the frontend.
JavaScript
1
star
40

strict_request_uri

Truncate and cleanup URLs with junk in Rack
Ruby
1
star
41

tdd-workshop

Repo to host the code for the TDD workshop
Kotlin
1
star
42

departure

WeTransfer's fork of departurerb/departure, to accelerate Rails 5.2 support. See the link for the original repo:
Ruby
1
star
43

sanitize_user_agent_header

Ensure User-Agent gets correctly UTF-8 encoded
Ruby
1
star
44

ks

Keyword-initialized Structs
Ruby
1
star
45

format_parser_pdf

file metadata parsing, for PDF
Ruby
1
star
46

EmbedExamples

Examples on how to use WeTransfer Embed
Ruby
1
star
47

simple_compress

GZIP compression to and from a String
Ruby
1
star