我正在从clearcase迁移到GIT。在clearcase中,我在文件上有“checkout”功能,表明该文件的工作并阻止其他人(在流上)编辑文件,并避免合并。现在,在GIT中我们遇到了很多合并,这很好,但我想使用CI来简化合并。
这就是我的想法:
但是,我知道通常的做法是挂钩提交并在那时运行CI进程。
GIT在本地维护几乎所有内容并避免服务器端调用,并且我填写了将git提交挂钩到CI进程会破坏GIT的这一优势。
所以,有几个问题:
谢谢
答案 0 :(得分:3)
我似乎想通过git来模仿旧的clearcase诱导工作流程。这通常不是一个好主意。 (即使您的团队习惯了良好的旧工作流程。)
如果clearcase适合你,只需坚持使用clearcase。如果您有充分的理由切换到git,请利用这个机会查看业务工作流程并围绕它构建合适的git工作流程。
问自己一些问题:
接下来设置一些有意义的分支。目前看起来你正在一个主分支上完成所有工作,但git中的分支非常轻量级,你应该考虑在不同的分支中开发功能并进行显式合并。
请不要滥用您的CI系统来推送提交并强制执行自动合并,除非您有充分的理由。 “推”通常意味着,您已完成工作并准备与其他团队成员分享。您的CI系统通常无法确定工作是否已完成或处于某种错误的实验状态。
我建议设置一些分支,为它们提供良好的语义,并设置CI系统,以便在更新时检查这些分支。 - 推送和合并之类的东西应该始终由真实的人明确而有意地完成。否则,迟早会发生奇怪的事情。
但所有这些都取决于您的具体情况。没有适合每个人的食谱。
答案 1 :(得分:0)
我的建议是购买这本书: 持续交付:通过构建,测试和部署自动化发布可靠的软件 (Addison-Wesley签名系列(Fowler)) - Humble,Jez,Farley,David
本书概述了持续集成的良好流程和框架。我相信,开发人员有责任确保代码在提交到触发自动构建的主分支之前编译,合并并通过高级功能测试。开发人员还需要承诺立即修复自动构建输出的任何问题。您的CI工具集需要传达自动构建和测试的状态以及管理需求,以确保失败是开发团队修复的最高优先级。