Seamless GitHub Sync
Connect a writable Trylle repository to GitHub with webhook-driven two-way synchronization.
GitHub Sync keeps one writable Trylle repository connected to one GitHub repository. New changes are delivered through webhooks and ordered outbound commands rather than a periodic export.
Use this for active development
GitHub Sync is the writable option. For a scheduled, read-only copy of a public repository, use a public mirror.
Before you begin
You need:
- permission to create or administer the destination Trylle repository;
- permission to install or request the Trylle GitHub App for the GitHub account;
- access to the GitHub repository through that App installation;
- a Trylle user authorization linked to the installation.
Installing the GitHub App is only the first half of the connection. Trylle also asks you to authorize GitHub so it can associate the installation with your Trylle account. Personal and organization installations can both be used, including private repositories explicitly granted to the App.
Create a synced repository
Choose GitHub Sync
In the Trylle dashboard, open Migrate, select GitHub, and choose GitHub Sync.
Install and authorize the GitHub App
Install the App on the personal account or organization that owns the source repository. Grant access to the required repositories, return to Trylle, and complete user authorization when prompted.
Select repositories and a destination
Select one or more repositories exposed to the installation and choose the Trylle user or organization that will own them. A single import may use a custom repository name; batch imports preserve each GitHub source name.
Start the import
Trylle imports the Git history into normal writable repositories, creates the synchronization connection, and registers the required webhooks. New imports initially synchronize all branches and tags.
Connect an existing Trylle repository
Open the repository and go to Settings > GitHub Sync. Install or authorize the App if needed, select the GitHub repository, choose a synchronization mode, and select Enable sync.
An existing connection is accepted only when the repositories can be joined safely:
- the GitHub repository is empty; or
- both repositories share Git history and the GitHub repository contains the Trylle repository's default branch.
A read-only public pull mirror is not eligible. One active connection owns a GitHub installation and repository pair, so the same GitHub repository cannot be connected to several live Trylle repositories.
Choose which refs synchronize
| Mode | Behavior |
|---|---|
| All branches | Synchronizes every branch and tag. This is the default for new imports. |
| Branch filter | Synchronizes branches whose names match the configured patterns. |
Branch filters accept exact names and simple patterns containing at most one *. Separate patterns with commas or whitespace.
main,release/*The example includes main and any branch that starts with release/. Enter branch names rather than full refs/heads/... values. Save the settings after changing the mode or filter.
What stays synchronized
The connection synchronizes Git refs and the collaboration lifecycle around them:
- branches and tags;
- issues and labels;
- pull requests and merges;
- issue and pull request comments;
- reviews, review dismissals, and reviewer requests;
- inline review comments and replies.
GitHub check, status, and workflow events cause Trylle to refresh its check view. They are not copied into Trylle as new issue or pull request lifecycle objects.
Existing issues and pull requests
Setup does not merge existing inventories
Enabling sync does not backfill or match issues and pull requests that already exist independently on both platforms. Matching numbers are not treated as the same item. Items present on only one side remain there until a new synchronized action concerns them.
This rule prevents unrelated GitHub and Trylle records from being combined merely because they use the same number. The Reconcile action also does not perform an inventory merge.
Monitor and recover the connection
The Settings > GitHub Sync page shows the source repository, current mode, connection health, conflicts, and pending or failed lifecycle operations.
Use Reconcile after restoring GitHub access, resolving a ref conflict, or addressing a failed delivery. Reconciliation repairs refs and retries recorded outbound commands in order. It does not discover and import unrelated historical issues or pull requests.
Typical states include:
| State | What to do |
|---|---|
| Pending operations | Wait for delivery; Trylle retains the ordered commands. |
| GitHub access failure | Restore App repository access or user authorization, then reconcile. |
| Ref conflict | Align the conflicting branch histories, then reconcile again. |
| Lifecycle failure | Correct the reported GitHub-side problem and retry with Reconcile. |
Trylle records synchronization work durably, so a temporary service restart does not require recreating the connection.
Disable synchronization
Select Disable on the GitHub Sync settings page to stop future synchronization. Disabling the connection does not delete either repository. Changes made independently after that point can create divergent histories, so review both sides before enabling a new connection later.