关键词:
各位ABAP公民们、特别是使用abapGit的各位,你们好。
我的团队和我将向大家分享我公司内引入abapGit后产生的某些开发问题。我所在的公司是一家创作SAP第三方软件的公司,目前主要使用ABAP和UI5。
本文专门针对ABAP方面。
首先,我们爱abapGit,相信你们中的很多也是一样...
我们的git仓库使用GitLab托管在本地,有着各种用户友好的特性。
我们至少每天push一次我们的commit,生成版本(可以说是一个额外的备份层)。
通过使用GitLabs的代码审查功能,也使代码审查变得容易了许多。
我们最近评估了使用分支的可能性,得出的结论是:我们不能在现有的基础设施之上使用它。
本文的剩余部分将探究如何使用abapGit实现分支。
本文链接:http://www.cnblogs.com/hhelibeb/p/7754487.html
英文原文:abapGit Branching Strategy Discussion
场景1:无分支
这就是我们现在的工作方式。所有开发者在相同的SAP系统和代码基础(code base)上工作,所有人都push代码到主“分支”上。
优势
- 更好的代码版本控制
- 易于进行代码审查
劣势
- 分支是不可能的,开发者同时在同样的代码基础上修改对象
- 切换分支时,会改变每个开发者的代码基础,虽然他们也许会以为自己还在他们的分支上
- 代码会因为其他人的问题commit出错
- 甲修改了对象A,乙后来也修改了它
甲在不知道乙修改过A的情况下进行了commit - 是的,进行最后一个修改的人可以在abapGit工作台上面看到这个,但是,你仍然有可能没看到它。
- 甲修改了对象A,乙后来也修改了它
场景2:使用分支
无法马上使用分支的根本原因在于,所有开发者使用同样的代码基础。开发者没有隔离他们同事的代码修改行为。
所以,实现真正分支的第一步就是,分割每个开发者的开发环境。这意味着,每个开发者要有他自己的SAP系统来进行开发。
这带给我们第一个整体的不利条件:
- 开发者数量的增加带来的高昂的维护费用。
Local VMs
我们的第一个想法是,为什么不在开发者的机器上虚拟化运行SAP系统呢?
开发者在进行一项任务时,可以push到他们的分支当中,直到它们创建一个merge request。
主开发系统(DEV)只从主分支拉取,主分支只包含被批准的merge request。
优势
- 连接到你的SAP系统时,不需要网络接口
- 你可以在不连接公司网络的情况下开发
- 只需要在push代码到git仓库的时候才需要连接公司网络
- 在SSD上面运行SAP系统真的快极了
劣势
- 高维护开销
- 管理员对机器的控制比较难
- 开发者需要知道怎样开启/关闭他们的虚拟机/SAP系统
- 甚至可能需要他们自己定时备份虚拟机
某些总体问题也打击了我们:
升级开发者的SAP系统
- 如何给系统打补丁(支持包,notes,系统级补丁)?
- 当需要获取定制数据、主数据和业务数据来开发新特性、重现bug并且修复时,要怎样获取它们?
升级主开发SAP系统
- 如何处理abapGit不能序列化的开发对象?
- 当需要获取定制数据、主数据和业务数据来开发新特性、重现bug并且修复时,主开发系统要怎样获取它们?
- 从主分支拉取代码后,要如何处理开发对象以把它们分配到合适的传输请求之上?
- 也许你有个复杂的传输规则以帮助代码复用。我们就是如此。
你还需要一个策略来应对以下问题:
- 为无法序列化的对象单独维护和配置以及单独地导入定制和工作台传输
- 听起来像一团糟
- 开发系统的复制(只复制SAP)
- 只是为了给你定制数据
- 克隆主开发系统运行的虚拟机(OS+SAP)
- 并且重命名SID和全称域名(Full Qualified Domain Name),否则你会遇到网络问题
- ……
并且,更新的频率是?
- 按需
- 在创建一个新分支前
- 在一个新的发布循环开始的时候
- ……
Hosted VMs
升级看起来是个大问题,也许不用一个本地虚拟机、而是使用托管虚拟机会更好。
这样的话,无论采取何种策略来更新,都可以更轻松地执行。
优势:
- 管理员可以在任何时间访问机器
劣势:
- 运行开发虚拟机带来的托管成本
结论
所以,进行这一切的优点是什么?
我们的看法是:
- 真正的分支成为可能,编码时不干涉其它开发者
- 由于merge request和多个commit的结合,更加有利于代码审查
- 对多个发行版本的良好支持,容易切换到一个发行分支上去
- ……
值得为此做出很多的努力吗?
我们的团队并不知道答案。系统同步带来的成本,看起来是巨大的。
在这点上我们感到不舒服,因此转向社区,希望听到你们在这个话题上的的意见和经验。
非常感谢,
André
参考文章:abapGit简介
abapgit客户端
...客户端将代码push到github上。这是一个开源项目:http://www.abapgit.org/首先在github上 查看详情
abapgit客户端
...客户端将代码push到github上。这是一个开源项目:http://www.abapgit.org/首先在github上 查看详情
分支和发布策略
】分支和发布策略【英文标题】:BranchingandReleasingstrategy【发布时间】:2011-02-1419:55:07【问题描述】:我发现有些人在谈论一些分支策略。所以我想我会得到一些cmets。所以项目是从主干分支出来的。称它为分支A。当工作在分支A... 查看详情
分支策略[关闭]
】分支策略[关闭]【英文标题】:BranchingStrategies[closed]【发布时间】:2010-09-0706:59:40【问题描述】:我工作的公司开始对他们当前的分支模型产生问题,我想知道社区已经接触了哪些不同类型的分支策略?有没有适合不同情况的... 查看详情
git企业中常用分支管理策略(代码片段)
Git企业中常用分支管理策略一般企业中开发一个项目的分支策略主分支master开发分支develop功能分支feature预发布分支 releasebug分支fixbug其它分支other主分支master代码库应该有一个、且仅有一个主分支。所有提供给用户使用的... 查看详情
DevOps 中的分支策略
】DevOps中的分支策略【英文标题】:BranchingstrategyinDevOps【发布时间】:2017-03-2006:42:04【问题描述】:我正在使用TFS设置DevOps流程,并且想知道分支策略。如果我有以下示例分支(图片来自Guidance:ABranchingstrategyforScrumTeams)。我已... 查看详情
Azure DevOps 中链式分支的分支策略
】AzureDevOps中链式分支的分支策略【英文标题】:BranchingstrategiesonchainedbranchinAzureDevOps【发布时间】:2020-06-1709:46:08【问题描述】:我从master创建了feature-1分支,然后从feature-1创建了feature-2分支,因为我需要来自feature-1的更新。ma... 查看详情
分支和合并策略
】分支和合并策略【英文标题】:BranchingandMergingStrategies【发布时间】:2010-12-0402:42:40【问题描述】:我的任务是制定未来6个月的分支、合并和发布策略。复杂性在于我们将运行多个项目,所有项目都有不同的代码更改和不同的... 查看详情
跨仓库分支策略构建验证 - 如何?
】跨仓库分支策略构建验证-如何?【英文标题】:Cross-repobranchpolicybuildvalidation-howto?【发布时间】:2020-03-2712:01:42【问题描述】:因此,AzureDevOpsUI现在支持设置跨存储库策略以保护所有现有和未来存储库的默认(主)分支-很好... 查看详情
git----分支管理之分支管理策略04
通常,合并分支时,如果可能,Git会用Fastforward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fastforward模式,Git就会在merge时生产一个新的commit,这样,从分支历史上就可以看出分支信息。下面我们实... 查看详情
git入门:创建合并分支解决冲突分支管理策略
分支创建与合并理解:相当于创建多一个与现在一模一样的平行时空在这基础上继续干活但其实并不会影响到当前时空,合并时再决定A时空并入B时空还是B时空并入A和空查看分支gitbranch;创建分支gitbranch‘分支名‘切换分支gitchec... 查看详情
git分支管理策略
Git分支管理策略 如果你严肃对待编程,就必定会使用"版本管理系统"(VersionControlSystem)。眼下最流行的"版本管理系统",非Git莫属。相比同类软件,Git有很多优点。其中很显著的一点,就是版本的分支(branch)和合并(merge... 查看详情
git学习6--分支管理策略,bug分支
1.准备合并dev分支,请注意--no-ff参数,表示禁用Fastforward:$gitmerge--no-ff-m"mergewithno-ff"devMergemadebythe‘recursive‘strategy.readme.txt|1+1filechanged,1insertion(+)合并后,我们用gitlog看看分支历史:$gitlog--graph--pretty=onelin 查看详情
分支策略 GIT [关闭]
】分支策略GIT[关闭]【英文标题】:BranchingStrategyGIT[closed]【发布时间】:2021-07-0212:23:00【问题描述】:我们正在进行基于功能的开发,一旦PR获得批准,它就会合并回master。当master的上线功能稳定时,我们会创建一个release分支。... 查看详情
svn分支管理策略个人见解
本篇目录前言SVN分支管理策略VisualSVNServerTortoiseSVN客户端Repository的创建Checkouttrunk创建新项目MyProjecttrunk更新提交更新,迭代版本创建TagV1.0基于Tag的HotfixBranchHotfixBranch改动Marge(合并)到trunk中同时创Tag_V1.1进行发布定制化分支Customize... 查看详情
git分支策略
比较成熟的一个git代码分支管理体系 gitmerge--no-ffdevelop 分享链接:https://blog.csdn.net/zhangxiao93/article/details/49991279http://www.ruanyifeng.com/blog/2012/07/git.html 查看详情
[廖雪峰]git分支管理策略
通常,合并分支时,如果可能,Git会用 Fastforward 模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制 禁用 Fastforward 模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支... 查看详情
git安装教程分支管理之分支管理策略(代码片段)
通常,合并分支时,如果可能,Git会用Fastforward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fastforward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。下面我们实战一... 查看详情