/pull

🤖 a GitHub App built with probot that keeps your repository up-to-date with upstream changes via automated PRs.

Primary LanguageJavaScriptMIT LicenseMIT

Pull App

Probot Featured GitHub Stars
Managing Installations Triggered #

Table of Contents

Introduction

GitHub Status TravisCI Codecov Probot JavaScript Style Guide jest MIT License

🤖 a GitHub App built with probot that keeps your forks up-to-date with upstream via automated pull requests.

Trusted by Repository Count repositories, triggered Triggered #.

Can you help keep this open source service alive? 💖 Please sponsor : )

Features

  • Ensure forks are updated.
  • Automatically integrate new changes from upstream.
  • Pull requests are created when upstreams are updated.
  • Automatically merge or hard reset pull requests to match upstream.
  • Add assignees and reviewers to pull requests.
  • Customize pull request label.
  • Honor branch protection rules.
  • Work well with pull request checks and reviews.

Prerequisites

  • Upstream must be in the same fork network.
  • ⚠️ Make a backup if you've made changes.

Getting Started

⭐ Star this project (Highly recommended, starred users may receive priority over regular users)

Basic Setup

Pull app will automatically watch and pull in upstream's default (master) branch to yours using hard reset every few hours. You can also manually trigger it anytime.

Advanced Setup (with config)

  1. Create a new branch.

  2. Setup the new branch as default branch under repository Settings > Branches.

  3. Add .github/pull.yml to your default branch.

    Most Common

    (behaves the same as Basic Setup)

    version: "1"
    rules:
      - base: master
        upstream: wei:master    # change `wei` to the owner of upstream repo
        mergeMethod: hardreset

    Advanced usage

    version: "1"
    rules:                      # Array of rules
      - base: master            # Required. Target branch
        upstream: wei:master    # Required. Must be in the same fork network.
        mergeMethod: hardreset  # Optional, one of [none, merge, squash, rebase, hardreset], Default: none.
        mergeUnstable: false    # Optional, merge pull request even when the mergeable_state is not clean. Default: false
      - base: dev
        upstream: master        # Required. Can be a branch in the same forked repo.
        assignees:              # Optional
          - wei
        reviewers:              # Optional
          - wei
        conflictReviewers:      # Optional, on merge conflict assign a reviewer
          - wei
    label: ":arrow_heading_down: pull"  # Optional
    conflictLabel: "merge-conflict"     # Optional, on merge conflict assign a custom label, Default: merge-conflict
  4. Go to https://pull.git.ci/check/${owner}/${repo} to validate your .github/pull.yml (Public repos only). See #234 for another way to validate it.

  5. Install <img src="https://prod.download/pull-18h-svg" valign="bottom"/> Pull Pull app.

Trigger manually

Go to https://pull.git.ci/process/${owner}/${repo} to manually trigger pull. Note: Nothing will happen if your branch is already even with upstream.

For Repository Owners

For the most common use case (a single master branch), you can just direct users to install Pull with no configurations. If you need a more advanced setup (such as a docs branch in addition to master), consider adding .github/pull.yml to your repository pointing to yourself (see example). This will allow forks to install Pull and stay updated automatically.

Example (assuming owner is your user or organization name):

version: "1"
rules:
  - base: master
    upstream: owner:master
    mergeMethod: hardreset
  - base: docs
    upstream: owner:docs
    mergeMethod: hardreset

Author

Wei He github@weispot.com

License

MIT