gitsync-go
支持跨网络git仓库同步的工具
# gitsync-go
Go 版本 repo 同步工具,支持:
- 日志文件记录
- 业务日志文件(每个仓库任务一行,记录关键结果)
- 外网/内网网卡自动切换后再执行拉取/推送
- 指定分支同步(如 `main`、`test`)
- 单次执行(建议由 Windows 任务计划程序定时触发)
## 1. 准备
1. 安装 Go 1.22+
2. 安装 Git 并确保 `git` 在 PATH
3. 以管理员身份运行(启停网卡需要管理员权限)
## 2. 配置
复制 `config.example.json` 为 `config.json` 后按实际修改。
每个仓库必须配置 `branches`,只会同步这些分支。
## 3. 运行
先编译:
```powershell
go build -o gitsync-go.exe .
```
查看网卡列表(用于直接拷贝到配置):
```powershell
.\gitsync-go.exe --list-networks
```
按配置执行同步:
```powershell
.\gitsync-go.exe -config .\config.json
```
## 4. 关键行为
- 外网阶段:先禁用并确认内网网卡已关闭,再启用外网网卡并等待“已连接”,然后按配置分支逐个 `git fetch`。
- 内网阶段:先禁用并确认外网网卡已关闭,再启用内网网卡并等待“已连接”,然后按配置分支逐个 `git push`。
- 推送前会额外检查远端就绪:`DNS 可解析`、`目标端口可连通`、`git ls-remote target` 成功,三者都通过后才推送。
- 每个仓库使用本地 mirror 目录缓存“上一步拉取的代码”。
- 详细命令输出写入日志文件,控制台只打印概要。
- 业务日志默认写入 `./logs/gitsync-business.log`,每个仓库只输出一行(仓库/分支/开始时间/耗时/结果/错误摘要)。
- 可通过 `network.external_ready_timeout_seconds`、`network.internal_ready_timeout_seconds`、`network.remote_ready_timeout_seconds`、`network.adapter_poll_seconds` 调整等待超时与轮询间隔。
← 返回下载中心