gitsync-go

支持跨网络git仓库同步的工具

版本:v0.1.0

gitsync-go

Go 版本 repo 同步工具,支持:

  • 日志文件记录
  • 业务日志文件(每个仓库任务一行,记录关键结果)
  • 外网/内网网卡自动切换后再执行拉取/推送
  • 指定分支同步(如 maintest
  • 单次执行(建议由 Windows 任务计划程序定时触发)

1. 准备

  1. 安装 Go 1.22+
  2. 安装 Git 并确保 git 在 PATH
  3. 以管理员身份运行(启停网卡需要管理员权限)

2. 配置

复制 config.example.jsonconfig.json 后按实际修改。
每个仓库必须配置 branches,只会同步这些分支。

3. 运行

先编译:

go build -o gitsync-go.exe .

查看网卡列表(用于直接拷贝到配置):

.\gitsync-go.exe --list-networks

按配置执行同步:

.\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_secondsnetwork.internal_ready_timeout_secondsnetwork.remote_ready_timeout_secondsnetwork.adapter_poll_seconds 调整等待超时与轮询间隔。
← 返回下载中心