Help us shape the future of Go! Take the 2026 Go Developer Survey

sync

package module
v0.30.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 26, 2026 License: MIT Imports: 2 Imported by: 0

README

git-ferry-core

CI Go Reference

git-ferry-core 是 git-ferry 生态的业务引擎核心库: Git 仓库镜像 / 备份 / 容灾演练 / 生命周期治理 / 组织编排等能力的实现层。 公网壳(git-ferry)与内网壳(git-ferry-intranet)都基于本库构建;本库是纯库, 除 pkg/proclog 显式提供进程级日志/退出辅助供壳调用外,不决定宿主进程的生命周期。

包布局

包 职责
service 业务服务层入口:NewService(cfg *Config, opts ...Option) 装配各领域服务
executor 同步/备份/DR 演练执行引擎、pipeline、bundle 与远端备份操作
mirror 镜像通道门禁、语义校验、跨实例镜像互斥
dao GORM 数据访问层(平台/仓库/任务/运行/审批/模板/操作日志等)
model GORM 模型与 AutoMigrate 注册(启动自动建表)
health 健康检查聚合
lock 进程内互斥与 redis 跨实例锁(抖动时降级为进程内互斥)
tpl 模板存储(文件实现,可被 service.TemplateStore 注入替换)
pkg 公共件:proclog、textutil 等

安装

go get github.com/yi-nology/git-ferry-core@latest

完整装配与调用方式参考 git-ferry 的 internal/corebridge 与 pkg.go.dev API 文档。

版本与兼容

  • 版本遵循 Semantic Versioning,变更记录见 CHANGELOG.md (格式遵循 Keep a Changelog)。
  • go.work 只是本地多仓联调的覆盖:CI 与发布均忽略 go.work。改动依赖本库时, 必须显式升级 go.mod 中的 require 版本并给本库打新 tag,发布后用 GOWORK=off go build ./... 自检,防止本地绿、发布红。

开发

make tidy   # go mod tidy
make test   # go test ./... -race -count=1

提交前请保证 gofmt -l . 为空;CI 会执行格式检查、go vet、-race 测试与 golangci-lint。

安全

漏洞报告与安全联系方式统一维护在 git-ferry 的 SECURITY.md。 平台凭据以加密形式落库,加密密钥由调用方(壳层)配置注入,不进入本库默认值。

License

MIT

Documentation

Overview

Package sync 是 git-ferry-core 的库入口:配置加载与 Service 构造。

本库**不提供任何 HTTP/Web 服务端**,也不依赖 hertz/gin 等 Web 框架。 不包含用户登录 / API Key / SSO 等鉴权;入站 Webhook 由壳层收包后 转成 service.WebhookPayload 再调用 Service.ReceiveWebhook。 Config.Server 仅含 Host/Port/Mode,core 自身不会监听端口。

详细子域见 model / service / executor / dao / lock。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config = model.Config

func LoadConfig

func LoadConfig(path string) (*Config, error)

type Option added in v0.9.0

type Option = service.Option

Option 装配期依赖注入(WithDB / WithProviderHooks / WithForcePushApprover)。

type Service

type Service = service.Service

func NewService

func NewService(cfg *Config, opts ...Option) (*Service, error)

type WebhookPayload

type WebhookPayload = service.WebhookPayload

WebhookPayload 协议无关的 Webhook 入站载荷(由壳层构造)。

Directories

Path Synopsis
Package health 实现仓库/任务的健康评分(借鉴 Port Scorecards / OpenSSF Scorecards)。
Package health 实现仓库/任务的健康评分(借鉴 Port Scorecards / OpenSSF Scorecards)。
Package lock 提供同步任务的并发控制原语:
Package lock 提供同步任务的并发控制原语:
Package mirror 提供"双仓双身份"的 Go module 镜像发布。
Package mirror 提供"双仓双身份"的 Go module 镜像发布。
history
Package history 实现「历史同步」:把内部源仓与公开目标仓之间的**内容差异** 整理成一份可审阅的同步计划,同时保留目标仓自己的提交历史。
Package history 实现「历史同步」:把内部源仓与公开目标仓之间的**内容差异** 整理成一份可审阅的同步计划,同时保留目标仓自己的提交历史。
pkg
deploykey
Package deploykey 生成镜像部署用 Ed25519 密钥对(壳层 ops/deploy-key 端点下沉)。
Package deploykey 生成镜像部署用 Ed25519 密钥对(壳层 ops/deploy-key 端点下沉)。
proclog
Package proclog 进程级日志初始化与失败退出。
Package proclog 进程级日志初始化与失败退出。
strutil
Package strutil 收敛 core 内字符串小工具,消除 executor/service 重复实现。
Package strutil 收敛 core 内字符串小工具,消除 executor/service 重复实现。
Package tpl 提供同步策略模板库(借鉴 Renovate packageRules/presets)。
Package tpl 提供同步策略模板库(借鉴 Renovate packageRules/presets)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL