关于 abapgit
abapgit 是面向 ABAP 开发者的技能,指导使用 abapGit 开展基于 Git 的开发。内容涵盖本地 SAP、BTP ABAP Environment 和 gCTS 中的配置、仓库操作、分支、CI/CD 与故障排查。
主要功能
- 01abapGit 环境配置指南
- 02克隆、拉取和推送仓库
- 03ABAP 分支与传输策略
- 04CI/CD 和 abaplint 配置
- 05常见仓库问题排查
适用场景
- 01在 SAP 系统中配置 abapGit
- 02在 Git 与 SAP 间迁移 ABAP 对象
- 03规划分支及传输工作流
- 04诊断 HTTPS 或序列化问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ likweitan/ abap-skills --skill abapgit安装后在 Claude Code 中输入/abapgit确认已加载。
详细介绍
abapGit 工作流
使用 abapGit 在 Git 仓库中管理 ABAP 开发对象的指南。
工作流
-
确定用户的目标:
- 首次设置 abapGit
- 克隆现有仓库
- 将 ABAP 代码推送到 Git 仓库
- 配置分支或传输策略
- 为 ABAP 设置 CI/CD 流水线
- 排查 abapGit 问题
-
识别环境:
- 使用 abapGit standalone 的本地部署 SAP 系统
- SAP BTP ABAP Environment(ADT 中的 abapGit 集成)
- gCTS(启用 Git 的更改与传输系统)
-
指导实施,遵循适用于 ABAP 的 Git 工作流最佳实践
abapGit 概述
| 方面 | 说明 |
|---|---|
| 是什么 | 面向 ABAP 的开源 Git 客户端,在 SAP 系统内运行 |
| 序列化 | 将 ABAP 对象转换为基于文件的格式,以便存储在 Git 中 |
| 反序列化 | 将基于文件的格式导入系统,转换回 ABAP 对象 |
| 支持的对象 | 类、接口、CDS、函数组、程序、表等 |
| 安装 | 通过 abapGit standalone 报表或 Eclipse 插件 |
设置
安装 abapGit Standalone(本地部署)
- 创建报表
ZABAPGIT_STANDALONE或ZABAPGIT_FULL - 从 https://raw.githubusercontent.com/abapGit/build/main/zabapgit_standalone.prog.abap 下载最新版本
- 将内容复制到报表中并激活
- 通过
SE38或事务ZABAPGIT运行报表
ADT 中的 abapGit(BTP ABAP Environment)
- 在 ADT 中:窗口 → 显示视图 → 其他 → abapGit Repositories
- 使用 HTTPS URL 链接仓库
- 需要为 Git 服务配置通信安排
SSL 证书
- 下载 GitHub/GitLab 根证书
- 通过
STRUST(事务)→ SSL Client (Anonymous) 或 (Standard) 导入 - 通过 HTTPS 连接到 Git 提供商时需要
核心操作
克隆仓库
1. Open abapGit (standalone or ADT)
2. Click "+ Clone" / "Link abapGit Repository"
3. Enter repository URL (HTTPS)
4. Select target package (create if needed)
5. Select branch (default: main)
6. Pull objects into the system
将更改推送到 Git
1. Stage changed objects (select what to include)
2. Write a meaningful commit message
3. Push to remote branch
4. Resolve conflicts if any
从 Git 拉取更新
1. Open the repository in abapGit
2. Click "Pull"
3. Review incoming changes
4. Activate pulled objects
.abapgit.xml 配置
仓库根目录中的 .abapgit.xml 文件用于控制序列化设置:
<?xml version="1.0" encoding="utf-8"?>
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<DATA>
<MASTER_LANGUAGE>E</MASTER_LANGUAGE>
<STARTING_FOLDER>/src/</STARTING_FOLDER>
<FOLDER_LOGIC>PREFIX</FOLDER_LOGIC>
<IGNORE>
<item>/.gitignore</item>
<item>/LICENSE</item>
<item>/README.md</item>
<item>/package.json</item>
<item>/.travis.yml</item>
</IGNORE>
<REQUIREMENTS/>
</DATA>
</asx:values>
</asx:abap>
关键设置
| 设置 | 值 | 说明 |
|---|---|---|
MASTER_LANGUAGE | E、D 等 | 文本的主语言 |
STARTING_FOLDER | /src/ | 序列化对象的根目录 |
FOLDER_LOGIC | PREFIX / FULL | 包层级映射到文件夹的方式 |
IGNORE | 文件模式 | 反序列化时排除的文件 |
REQUIREMENTS | 软件组件 | 导入前必须存在的依赖项 |
文件夹逻辑
- PREFIX:移除包名前缀。
Z_PKG下的Z_PKG_SUB→sub/文件夹 - FULL:完整包名作为文件夹。
Z_PKG_SUB→z_pkg_sub/
分支策略
推荐:ABAP 主干开发
main (production-ready)
└── feature/add-validation
└── feature/new-report
└── bugfix/fix-calculation
- 保持
main分支稳定且可部署 - 创建生命周期短的功能分支
- 通过带代码审查的拉取请求进行合并
- 每个开发分支对应一个 SAP 系统
基于传输的策略
DEV system ←→ feature branches
QAS system ←→ release branch
PRD system ← main branch (tags for releases)
传输与 Git 工作流
| 方面 | 基于传输 | 基于 Git(abapGit) |
|---|---|---|
| 版本控制 | 传输请求 | Git 提交,包含完整历史记录 |
| 协作 | 传输副本 | 分支、拉取请求、代码审查 |
| 回滚 | 困难 | git revert 或检出之前的提交 |
| CI/CD | 有限 | 与流水线全面集成 |
| 多系统 | 传输路径 | 在每个系统中克隆/拉取 |
| 冲突解决 | 手动 | Git 合并工具 |
混合方式
许多团队使用 abapGit 进行版本控制,同时保留传输机制用于部署:
- 在 DEV 系统中开发
- 将更改提交到 Git(abapGit 推送)
- 使用传输请求将更改移至 QAS/PRD
- Git 作为事实来源和备份
CI/CD 集成
CI 流水线中的 abaplint
# .github/workflows/abaplint.yml
name: abaplint
on: [push, pull_request]
jobs:
abaplint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: niclas-timm/abaplint-action@main
abaplint.json 配置
{
"global": {
"files": "/src/**/*.*"
},
"syntax": {
"version": "Cloud",
"errorNamespace": "^(Z|Y|LCL_|LIF_)"
},
"rules": {
"description": "ABAP lint configuration"
}
}
故障排除
| 问题 | 解决方案 |
|---|---|
| SSL 握手错误 | 通过 STRUST 导入 SSL 证书 |
| 授权错误 | 检查 S_DEVELOP 授权对象 |
| 对象被传输锁定 | 释放或移除传输锁定 |
| 序列化错误 | 检查 abapGit 对对象类型的支持 |
| 命名空间冲突 | 确保命名约定唯一 |
| 大型仓库速度慢 | 使用浅克隆或拆分为多个子包 |
输出格式
在提供 abapGit 相关帮助时,请按以下结构组织回复:
## abapGit Guidance
### Context
- Environment: [On-premise / BTP / gCTS]
- Operation: [Clone / Push / Pull / Setup]
### Steps
[Step-by-step instructions]
### Configuration
[Relevant .abapgit.xml or abaplint settings]
参考资料
- abapGit 文档:https://docs.abapgit.org/
- abapGit GitHub:https://github.com/abapGit/abapGit
- abaplint:https://abaplint.org/
相关技能
- abap:用于将 abaplint 集成到 abapGit 仓库
- btp-abap-environment:用于在 BTP ABAP Environment 中设置 abapGit
- abap-cloud:用于确保 abapGit 仓库符合 ABAP Cloud 要求
评论
支持 Markdown