[PR #255] [MERGED] fix: private GitHub mirror auth for migrate API #1359

Closed
opened 2026-04-21 23:17:50 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/RayLabsHQ/gitea-mirror/pull/255
Author: @arunavo4
Created: 3/27/2026
Status: Merged
Merged: 3/27/2026
Merged by: @arunavo4

Base: mainHead: codex/fix-issue-254-private-mirror-auth


📝 Commits (1)

  • df2d9a2 fix private github mirror auth

📊 Changes

3 files changed (+142 additions, -16 deletions)

View changed files

📝 src/lib/gitea.ts (+33 -16)
src/lib/utils/mirror-source-auth.test.ts (+63 -0)
src/lib/utils/mirror-source-auth.ts (+46 -0)

📄 Description

Summary

  • Fix private GitHub mirroring auth payload for Gitea/Forgejo migrate API.
  • Replace GitLab-style auth_username: "oauth2" assumption with GitHub-compatible source credentials.
  • Add shared helper to construct private-source auth fields consistently across both mirror code paths.
  • Add unit tests for credential payload selection and validation.

Root Cause

A previous Forgejo 12 compatibility refactor removed credentials from clone URLs (correct), but switched private GitHub source auth to auth_username + auth_token with auth_username="oauth2".
That username pattern is not reliably valid for GitHub HTTPS auth and caused private clone failures (Invalid username or token, could not read Username ... terminal prompts disabled).

What Changed

  • src/lib/gitea.ts
    • mirrorGithubRepoToGitea: use buildGithubSourceAuthPayload(...) for private sources.
    • mirrorGitHubRepoToGiteaOrg: use the same helper for org mirror path.
  • src/lib/utils/mirror-source-auth.ts
    • New helper building auth_username, auth_password, and auth_token from GitHub config/repo context.
  • src/lib/utils/mirror-source-auth.test.ts
    • New tests covering owner/username/repo-owner fallback order, token trimming, and missing token error.

Testing

  • bun test src/lib/utils/mirror-source-auth.test.ts
  • bun test src/lib/gitea.test.ts

Closes #254


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/RayLabsHQ/gitea-mirror/pull/255 **Author:** [@arunavo4](https://github.com/arunavo4) **Created:** 3/27/2026 **Status:** ✅ Merged **Merged:** 3/27/2026 **Merged by:** [@arunavo4](https://github.com/arunavo4) **Base:** `main` ← **Head:** `codex/fix-issue-254-private-mirror-auth` --- ### 📝 Commits (1) - [`df2d9a2`](https://github.com/RayLabsHQ/gitea-mirror/commit/df2d9a269172c7911c0a9416907424b6ccc04f49) fix private github mirror auth ### 📊 Changes **3 files changed** (+142 additions, -16 deletions) <details> <summary>View changed files</summary> 📝 `src/lib/gitea.ts` (+33 -16) ➕ `src/lib/utils/mirror-source-auth.test.ts` (+63 -0) ➕ `src/lib/utils/mirror-source-auth.ts` (+46 -0) </details> ### 📄 Description ## Summary - Fix private GitHub mirroring auth payload for Gitea/Forgejo migrate API. - Replace GitLab-style `auth_username: "oauth2"` assumption with GitHub-compatible source credentials. - Add shared helper to construct private-source auth fields consistently across both mirror code paths. - Add unit tests for credential payload selection and validation. ## Root Cause A previous Forgejo 12 compatibility refactor removed credentials from clone URLs (correct), but switched private GitHub source auth to `auth_username + auth_token` with `auth_username="oauth2"`. That username pattern is not reliably valid for GitHub HTTPS auth and caused private clone failures (`Invalid username or token`, `could not read Username ... terminal prompts disabled`). ## What Changed - `src/lib/gitea.ts` - `mirrorGithubRepoToGitea`: use `buildGithubSourceAuthPayload(...)` for private sources. - `mirrorGitHubRepoToGiteaOrg`: use the same helper for org mirror path. - `src/lib/utils/mirror-source-auth.ts` - New helper building `auth_username`, `auth_password`, and `auth_token` from GitHub config/repo context. - `src/lib/utils/mirror-source-auth.test.ts` - New tests covering owner/username/repo-owner fallback order, token trimming, and missing token error. ## Testing - `bun test src/lib/utils/mirror-source-auth.test.ts` - `bun test src/lib/gitea.test.ts` Closes #254 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-04-21 23:17:50 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea-mirror#1359