Repository navigation
Releases: adamzend/gitea-github-sync
Release list
v1.0.3 - Progress logs and reliable mirror enrichment
Reliable comment retrieval, GitHub redirects and progress logs
- Fixed Gitea per-issue comment retrieval: this endpoint returns all comments and
does not support pagination. Other paginated lists retain full pagination and
repeated-page protection. - Follow GitHub GET redirects within the configured API origin, up to five hops.
Reject external origins and loops; never redirect or automatically repeat writes. - Preserve unavailable GitHub sources (HTTP 404) and count them separately.
Removed the misleading Failure/exit 4 message for this expected condition;
genuine validation failures remain failures. - Added stage and periodic progress logs with repository, page or processed counts,
and elapsed seconds. PROGRESS_INTERVAL defaults to 60 seconds. Long requests or
JSON operations can delay messages until the next work boundary. - Quiet mode still produces no terminal output; progress is written to its log.
Validation
The comment/redirect candidate completed a full production run on October 27:
59 discovered, 57 selected, 56 succeeded, 0 failed, 2 skipped, 1 unavailable.
The run took 7h 49m and created 617 issues and 1531 comments, updating 143 issues.
The subsequent progress and diagnostic fixes were tested against mock APIs,
including idempotency, unavailable sources, malformed JSON, redirects, rate limits,
repository isolation, progress throttling and quiet background execution.
Native Gitea mirror-sync jobs are asynchronous; queued jobs are not verified complete.
Upgrade
Replace the installed script and keep your existing configuration and cron.
PROGRESS_INTERVAL is optional; existing configurations use 60 seconds automatically.
Large accounts may require many hours. No database migration is needed.
v1.0.2 - Weekly quiet cron deployment
Weekly quiet synchronization: deployment and documentation
This release adds a ready-to-install system cron example and explains how to
deploy the script for automatic weekly execution.
What changed
- Added
gitea-github-sync.cron: every Monday at 03:00, as root, in --apply-quiet mode. - Added installation, permissions, timezone and log-verification instructions.
- Added CHANGELOG.md explaining the changes and their motivation.
- Included the existing GPL-3.0-only license in the downloadable bundle.
Why
The original server had an older installed script without quiet mode and no
weekly cron entry. Deploying the published version and installing the schedule
resolved these deployment gaps. This release makes that setup reusable.
The Bash script is unchanged from v1.0.1. --apply-quiet was already available;
this release does not introduce it again. The cron file and documentation are new.
Installation
Keep your existing configuration and tokens. From the extracted bundle:
sudo install -o root -g root -m 755 ./gitea-github-sync.sh /usr/local/bin/gitea-github-sync.sh
sudo install -o root -g root -m 644 ./gitea-github-sync.cron /etc/cron.d/gitea-github-syncCheck for an equivalent existing cron job before installing. The cron service
must be active. Schedule times follow the server timezone. The installation does
not trigger an immediate synchronization. Large accounts can take hours to finish.
Inspect /var/log/gitea-github-sync.log (or QUIET_LOG_FILE) for the worker's final
exit_status=0. The background launcher's success is not the synchronization result.
Validation: unchanged script verified against v1.0.1, Bash syntax checked, cron
schedule/line endings validated. The deployed cron service, files, dependencies
and read-only API access were checked; a scheduled run was not manually triggered.
v1.0.1 - Configure your own Gitea instance
Use your own Gitea instance through the configuration file.
- Removed the deployment-specific fallback server address.
- GITEA_URL is now required; absent, empty or malformed URLs fail before API access.
- The example uses https://gitea.example.com and auto-detects the token account by default.
- Documented custom domains, ports and subdirectory installations such as /gitea.
Upgrade: ensure /etc/gitea-github-sync.conf contains your instance URL:
GITEA_URL='https://your-gitea.example.com'Include a path prefix if your installation uses one. Do not append /api/v1.
Existing configurations with a valid GITEA_URL continue to work unchanged.
Validation: Bash syntax, ShellCheck and local tests for missing/invalid URLs
and authenticated requests to a configured host, port and path prefix.
v1.0.0 - First public release
First public release of Gitea GitHub Sync.
Automatically discover GitHub pull mirrors owned by a Gitea account and enrich
them with repository metadata, topics, issues and comments.
Features:
- --dry-run, --apply and --apply-quiet execution modes.
- Quiet background execution with a persistent log and final exit status.
- GitHub rate-limit handling and diagnostic API messages.
- Per-repository isolation, process locking and repeat-run deduplication.
- Full English documentation, including YunoHost deployment paths and long-running scans.
Download the ZIP for the script, example configuration and documentation, or
download the individual files. Configure your own tokens locally; no real token
is included. Verify downloads against SHA256SUMS.
Depending on the number of repositories and comments, synchronization can take
hours. Quiet launch success is not completion; inspect the worker log.
Validation: Bash syntax, ShellCheck and local mock API tests, including account
discovery, repeated runs, failure handling, throttling and background operation.