Files
fnos-gitea-sync/README.md
T
cbb 1acd60894f feat: v1.3.0 — 多项目同时同步(并行度可调 1~8,默认 3)
- run_sync 改线程池并行:每轮最多 N 个项目同时克隆/推送,项目多时
  显著缩短单轮耗时(实测 6 个仓库 3 并发 3 倍加速)
- 按仓库防重入:同一仓库同时只允许一个同步,后到者提示
  「该仓库正在同步中,请稍候」,避免并发 git 操作损坏镜像
- 状态页单仓库「同步」按钮不再被整轮同步全局拦截(旧版报
  「已有同步任务正在进行」),与进行中的整轮真正并行
- 新增「同时同步项目数」设置(1~8),设置页可调,立即生效
- 统计计数与日志写入加锁,修正并行下的计数漂移与日志交错风险
- 首页/状态页显示当前并行数;manifest 1.2.0 → 1.3.0
2026-10-13 20:14:57 +08:00

88 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GiteaHubSync — Gitea → GitHub 镜像同步(飞牛原生应用)
每次推送到飞牛 Gitea(3000 端口)的代码,**自动镜像到 GitHub**(默认 10 秒一轮,间隔 5 秒 ~ 1 天可在设置页调整;默认 7 个仓库:
SMB_Android / DCU_APP / GD32E50X_BOOT / DCU_DesktopController / Motor_v2 / DCU_ECAT_Master / GD32_BOOT,
可任意增减)。
和「Agent 签到助手」一样,是标准的飞牛 `.fpk` 原生应用:**不进 Docker**,依赖已安装的
`python312` 运行时,安装后出现在应用中心已安装列表和桌面启动台,可 启动/停止/重启/卸载,
NAS 重启自动恢复。控制面板带自动同步开关、立即同步、仓库状态、同步日志和
「打开 Gitea(3000 端口)」按钮。
## 功能特性
- **多 GitHub 账号**:设置页可添加多个 GitHub 账号(用户名 + Personal Access Token),
一键切换推送目标;每个账号独立记录同步进度,切回原账号不会重复推送
- **同步间隔可调**:设置页可改检查间隔(5 秒 ~ 1 天,默认 10 秒),改完立即生效
- **多项目并行同步**:每轮最多 N 个项目同时克隆/推送(默认 3,可调 1~8);
在状态页点单个仓库的「同步」也不再被整轮同步阻塞(同一仓库有防重入)
- **Gitea 地址可改**:设置页可改同步引擎访问的 Gitea 地址(默认 `http://127.0.0.1:3000`),
保存前自动探测连通性;改地址后已有镜像的拉取地址自动更新,「打开 Gitea」按钮随访问地址自适应
- **自动创建仓库**:Gitea 上的新仓库加入同步时,若 GitHub 上不存在同名仓库,
自动按账号设置为私有/公开创建(可开关)
- **两种推送方式**:配置了 Token 的账号走 HTTPS 推送(通用,任何人都能用自己的
GitHub 账号使用);未配置 Token 的旧账号继续走 SSH 私钥推送
- **真镜像语义**:Gitea 删分支/标签,GitHub 同步删
- 推送失败下一轮自动重试;开关关掉后完全停止同步
## 安装(三选一)
### 方式一:飞牛网页手动安装(不需要给任何密码)
1. 把 NAS 上的 `fnos-gitea-sync/GiteaHubSync/GiteaHubSync.fpk` 下载到电脑
(通过飞牛文件管理/SMB,目录:`/vol1/@appshare/fn-deepseek-harness/fnos-gitea-sync/GiteaHubSync/`)
2. 飞牛网页 → **应用中心** → 右上角 **手动安装** → 选择该 fpk
3. 等待安装完成(依赖 python312 已满足),应用自动启动,约 1 分钟内完成首次同步
### 方式二:命令行自动安装(和签到系统相同的方式)
```bash
cd /vol1/@appshare/fn-deepseek-harness/fnos-gitea-sync
FNOS_HOST=192.168.31.10 FNOS_USER=<管理员账号> FNOS_PASS=<密码> \
/var/apps/nodejs_v24/target/bin/node fnos-install.js
```
### 方式三:先用着原生版
在安装应用前,面板已以原生方式在 `http://192.168.31.10:8899` 运行,功能一致。
安装应用时安装脚本会自动停掉原生版,无缝交接。
## 安装后
- **桌面图标**:「Gitea→GitHub 同步」,点击打开控制面板
- **或直接访问**:`http://192.168.31.10:8899`
- **应用中心管理**:已安装 → GiteaHubSync → 启动/停止/重启/卸载
- **数据目录**:`/vol1/@appdata/GiteaHubSync`(镜像仓库、状态、日志;卸载应用不丢 GitHub 上的代码)
## 使用自己的 GitHub 账号(大众用法)
1. 打开面板 → **⚙️ 设置** →「添加 / 更新 GitHub 账号」
2. 到 [github.com/settings/tokens](https://github.com/settings/tokens) 生成
**Tokens (classic)**,勾选 `repo` 权限
3. 填回面板(用户名留空则按 Token 自动识别),点「验证并添加」——添加第一个 Token
账号后会自动切换为当前账号
4. 「Gitea 用户名」改成你自己的 Gitea 用户名(面板据此列出可同步的仓库)
5. 到 **🧩 项目管理** 添加要同步的仓库;GitHub 上不存在时会自动创建(默认私有)
> Token 只保存在 NAS 本地 `accounts.json`(权限 600),不上传任何地方;
> 日志中的 Token 会自动打码。卸载应用不会动 GitHub 上的任何仓库。
如果你的 Gitea 不在默认的 `127.0.0.1:3000`(比如换了端口),到设置页「Gitea 地址」一栏改掉即可,
保存时会自动探测连通性,并同步更新所有已有镜像的拉取地址。
## 重新构建
```bash
cd /vol1/@appshare/fn-deepseek-harness/fnos-gitea-sync
./build.sh
```
## 说明
- 带 Token 的账号走 HTTPS 推送(任何网络环境可用);无 Token 的旧账号走 SSH 22
端口直连,私钥随应用打包安装在 NAS 本地
- 从 v1.0.0 升级会自动迁移:旧的同步进度归入「默认(SSH 私钥)」账号,行为不变
- 数据文件:`accounts.json`(GitHub 账号,含 Token)、`settings.json`
(Gitea 地址/用户名/密码、自动创建开关、同步间隔)、`repos.json`(同步列表)、
`.last-pushed/<账号>/<仓库>`(每个账号的同步进度)