Tix
A CLI tool for creating tickets and branches in Git repositories, with support for both GitHub and GitLab.
Features
- Create tickets in GitHub or GitLab
- Automatically create and checkout branches
- Create draft merge requests/pull requests
- Generate AI-powered descriptions for merge requests and issues
- Support for Git worktrees
- Interactive repository selection
- Auto-detect repository based on current directory
- Configurable default labels and milestone generation
- YAML configuration
Installation
go install github.com/tedkulp/tix@latest
Configuration
Create a configuration file at ~/.tix.yml with the following structure:
repositories:
- name: my-project
github_repo: username/repo
directory: ~/src/my-project
default_labels: bug,enhancement
default_branch: main
- name: another-project
gitlab_repo: group/project
directory: ~/src/another-project
default_labels: feature
worktree:
enabled: true
default_branch: main
Environment Variables
GITHUB_TOKEN: GitHub API token (required for GitHub repositories)
GITLAB_TOKEN: GitLab API token (required for GitLab repositories)
OPENAI_API_KEY: OpenAI API key (required for AI-powered descriptions)
Usage
Create a new ticket and branch
# Create a new ticket interactively
tix create
# Create a new ticket with a specific title
tix create --title "Add new feature"
# Create a new ticket and assign it to yourself
tix create --self-assign
Create a merge request/pull request
# Create a merge request/pull request for the current branch
tix mr
# Create a draft merge request/pull request
tix mr --draft
# Use a specific remote (default is 'origin')
tix mr --remote upstream
Generate descriptions with AI
# Generate and update descriptions for the current merge request and issue
tix setdesc
# Display version information
tix version
Options
Global options that can be used with any command:
# Enable verbose logging
tix --verbose
# Use a specific config file
tix --config /path/to/config.yml
License
MIT
Releasing
This project uses GoReleaser to handle releases. To release a new version:
-
Create and push a new tag with the version (e.g., v0.1.0):
git tag -a v0.1.0 -m "Release v0.1.0"
git push origin v0.1.0
-
The GitHub Actions workflow will automatically build and release the binaries to GitHub Releases.
Homebrew
Releases are automatically published to the tedkulp/homebrew-tap repository. To install via Homebrew:
brew tap tedkulp/tap
brew install tix
Manual Release
If you need to create a release manually:
- Install GoReleaser:
brew install goreleaser/tap/goreleaser
- Set your GitHub token:
export GITHUB_TOKEN=your_token
- Run GoReleaser:
goreleaser release --clean
For local testing, you can run: goreleaser release --snapshot --clean