public class GitRepoHelper extends Object
封装本地克隆目录定位、origin 地址校准、拉取、提交推送等仓库操作, 以及按编辑器登录用户名解析个人凭证: 数据库表(db.table)→ yml 列表(credentials)→ 单人配置(credential) → magic-api.resource.git 全局账号。
| Constructor and Description |
|---|
GitRepoHelper(org.ssssssss.magicapi.git.MagicGitProperties gitProperties,
org.ssssssss.magicapi.core.config.MagicAPIProperties magicAPIProperties,
MagicGitSyncProperties syncProperties,
org.springframework.beans.factory.ObjectProvider<DataSource> dataSourceProvider,
org.ssssssss.magicapi.core.interceptor.AuthorizationInterceptor authorizationInterceptor) |
| Modifier and Type | Method and Description |
|---|---|
void |
applyRemoteUrl(org.eclipse.jgit.api.Git git)
若配置了 remote-url(顶层优先,兼容 credential.remote-url 旧配置)且与当前 origin 不一致,
自动改写远程地址,使开发者无需手工修改本地克隆仓库
|
String |
commitAndPush(String editorUsername,
String message)
提交本地全部变更并推送
|
org.eclipse.jgit.transport.CredentialsProvider |
credentialProvider(String editorUsername)
按编辑器登录用户名构建拉取/推送凭证,查找顺序:
数据库表 → yml credentials 列表 → credential 单人配置 → 全局账号
|
String |
currentEditorUsername()
从当前请求上下文中解析编辑器登录用户名(通过 Magic-Token 请求头),解析不到返回 null
|
File |
ensureRepo()
确保本地仓库存在:已克隆则直接返回,未克隆则按官方默认目录克隆
|
org.eclipse.jgit.transport.CredentialsProvider |
globalCredential()
全局账号凭证(magic-api.resource.git)
|
boolean |
pull(String editorUsername)
执行一次 git pull
|
MagicGitSyncProperties.UserCredential |
resolveCredential(String editorUsername)
解析当前请求对应的个人凭证(数据库表 → yml 列表),未命中返回 null(由调用方回退)
|
File |
resolveRepoDir()
定位本地克隆目录。
|
public GitRepoHelper(org.ssssssss.magicapi.git.MagicGitProperties gitProperties,
org.ssssssss.magicapi.core.config.MagicAPIProperties magicAPIProperties,
MagicGitSyncProperties syncProperties,
org.springframework.beans.factory.ObjectProvider<DataSource> dataSourceProvider,
org.ssssssss.magicapi.core.interceptor.AuthorizationInterceptor authorizationInterceptor)
public File resolveRepoDir()
git 存储模式下 magic-api-plugin-git 固定克隆到 /data/magic-api/ (Windows 即盘符根目录 data\magic-api),resource.location 不生效; 为兼容不同配置,优先取配置的 location,不存在时回退到 git 插件默认目录。
public File ensureRepo() throws Exception
Exceptionpublic boolean pull(String editorUsername) throws Exception
editorUsername - 编辑器登录用户名,用于匹配个人凭证,可为 nullExceptionpublic String commitAndPush(String editorUsername, String message) throws Exception
editorUsername - 编辑器登录用户名,用于匹配个人凭证与提交人,可为 nullmessage - 提交说明Exceptionpublic MagicGitSyncProperties.UserCredential resolveCredential(String editorUsername)
public String currentEditorUsername()
public org.eclipse.jgit.transport.CredentialsProvider credentialProvider(String editorUsername)
public org.eclipse.jgit.transport.CredentialsProvider globalCredential()
Copyright © 2026. All rights reserved.