sync

package module
v0.29.0 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 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