ghup

command module
v0.14.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 28, 2025 License: BSD-3-Clause Imports: 4 Imported by: 0

README

CodeQL Go Report Card

ghup

ghup is a command-line tool for managing GitHub repository content and refs (branches and tags) directly via the GitHub API, with a focus on enabling verified commits from build systems such as GitHub Actions or Jenkins.

Key Features

  • Create, update, and delete repository content with verified commits via GitHub API
  • Create and update both lightweight and annotated tags
  • Synchronise arbitrary git refs, including fast-forward merges
  • Resolve commit references to full SHAs
  • Open pull requests for changes
  • Smart context detection for repository and branch information
  • 12-Factor app style configuration via flags, environment variables, or files
  • No external dependencies required

Requirements

  • A GitHub token with contents=write and metadata=read permissions (plus workflows=write if managing GitHub workflows)
  • For verified commits, use a token derived from GitHub App credentials

Installation

Pre-built Binaries

Download binaries for all platforms from GitHub Releases.

Using Go
go install github.com/nexthink-oss/ghup@latest
Homebrew
brew install isometry/tap/ghup
GitHub Actions
- uses: nexthink-oss/ghup/actions/setup@v1

Configuration

ghup can be configured through:

  1. Command-line flags
  2. Environment variables (GHUP_*, with various fallbacks for CI tools)
  3. Configuration files (various formats supported)

When run from a git repository, ghup automatically detects:

  • Repository owner and name from the GitHub remote
  • Current branch
  • Git user information for commit trailers

See full documentation for details on configuration options.

Basic Usage

Managing Content
# Update a file
ghup content -b feature-branch -u local/file.txt:remote/path.txt

# Create a pull request with changes
ghup content -b new-feature -u config.json --pr-title "Update configuration"

# Add, update, and delete files in one commit
ghup content -b updates \
  -u local/new-file.txt:new-file.txt \
  -d old-file.txt \
  -c main:existing-file.txt:new-location.txt

See content command documentation for more examples.

Creating and Managing Tags
# Create an annotated tag
ghup tag v1.0.0 --commitish main

# Create a lightweight tag
ghup tag v1.0.0 --lightweight

See tag command documentation for more examples.

Updating References
# Fast-forward a branch to match another
ghup update-ref -s main refs/heads/production

# Update GitHub Actions-style tags after a release
ghup update-ref -s tags/v1.2.3 tags/v1.2 tags/v1

See update-ref command documentation for more examples.

Resolving Commits
# Resolve a branch to its SHA
ghup resolve main

# Find all tags pointing to a specific commit
ghup resolve abc123 --tags

See resolve command documentation for more examples.

Debugging
# View configuration and environment information
ghup debug

See debug command documentation for more details.

GitHub Actions

ghup offers ready-to-use GitHub Actions to simplify integration within your workflows:

Setup Action

The nexthink-oss/ghup/actions/setup action installs ghup and makes it available in your workflow:

- uses: nexthink-oss/ghup/actions/setup@main
  with:
    version: v0.12.0 # optional, defaults to 'latest'
Fast-Forward Action

The nexthink-oss/ghup/actions/fast-forward action updates refs to match a source commit:

- uses: nexthink-oss/ghup/actions/fast-forward@main
  with:
    source: main
    target: refs/heads/production
    # force: false # optional, defaults to false
  env:
    GITHUB_TOKEN: ${{ github.token }}

Use this action to implement true fast-forward merges or to create/update tags from specific commits.

See individual action READMEs for detailed usage examples and parameters.

Documentation

Detailed documentation for all commands is available in the docs/cmd directory:

Contributing

All contributions in the spirit of the project are welcome! Open an issue or pull request to get started.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
internal
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL