从集中版本控制系统切换到Git会改变开发团队开发软件的方式。而且,如果您是依赖其关键任务应用的软件的公司,更改开发流将影响整个业务。
在本文中,我们将讨论Git如何在各个方面为公司组织带来益处,从您的开发团队到您的营销团队,及其他。在本文结尾,应该很清楚,Git不仅仅适合敏捷软件开发 - 它适合用于敏捷业务。
Git可以为开发者带来什么
功能分支工作流
Git的最大优点之一是其分支功能。与集中版本控制系统不同,Git分支使用容易而且易于合并。这有助于功能分支工作流再许多Git用户中流行。
功能分支为您的代码库的每个更改提供了一个孤立的环境。当开发人员想要开始工作时,无论大小还是小,都可以创建一个新的分支。这样可以确保主分支始终是产品级质量代码。
使用功能分支不仅比直接编辑生产代码更可靠,而且还提供结构化的优点。他们让您可以和您的敏捷待办事项使用相同的粒度来代表开发工作。例如,您可以实施一个策略,其中每个JIRA票证可以在自己的功能分支中找到。
分布式开发
在SVN中,每个开发人员都获得一个指向一个中央仓库的工作副本。然而,Git是分布式版本控制系统。每个开发人员不用工作副本,而是获取自己的本地仓库,并具有完整的提交历史记录。
拥有完整的本地历史使Git更快,因为这意味着您不需要网络连接就能创建提交,检查文件的先前版本,或者在提交之间执行差异。
分布式开发还可以让你更轻松地扩展您的工程团队。如果有人破坏了SVN的生产分支,其他开发人员在修复问题之前就无法检查它们的更改。使用Git,这种阻塞就不会存在。每个人都可以继续在自己的本地仓库中进行开发。
而且,与功能分支类似,分布式开发创造了一个更可靠的环境。即使一个开发人员删除了自己的仓库,他们也可以简单地克隆别人,重新开始。
合并申请
许多源代码管理工具,比如Bitbucket,可以通过合并申请增强核心的Git功能。合并申请用来要求另一开发人员将您的一个分支合并到其仓库中的一种方式。这不仅使项目管理者能够更轻松地跟踪变更情况,还可以让开发人员在将其与其他代码集成在一起之前展开讨论。
由于它们本质上是附加到功能分支的注释,所以合并申请有很多作用。当开发者遇到困难的问题时,他们可以打开一个合并申请,要求其他团队的帮助。或者,初级开发人员可以放心,通过将合并申请视为正式代码审查,他们不会破坏整个项目。
社区支持
在许多方面,Git已经成为新项目的版本控制系统的标配。如果您的团队正在使用Git,您可能无需在工作流程上培训新员工,因为他们已经熟悉分布式开发。
另外,Git在开源项目中非常受欢迎。这意味着轻松利用第三方库的优势,并鼓励其他人分享自己的开源代码。
更快的释放周期
功能分支,分布式开发,合并申请和稳定社区带来的最终结果是项目更快的发布周期。这些功能有助于敏捷开发工作流,鼓励开发人员更频繁地分享更小的更改。相应地,相比集中式版本控制系统,修改可以更快地发布。
正如您所期望的那样,Git在持续集成和持续交付环境中工作得很好。Git钩子允许您在仓库内部发生某些事件时运行脚本,从而使您可以自动部署到您核心内容。您甚至可以将代码从特定的分支部署到不同的服务器。
例如,您可能希望配置Git,以便每当任何人将pull请求合并到其中时,将最新的提交从开发分支部署到测试服务器。将这种构建自动化与同行审查相结合,意味着您可以对代码从开发转移到生产发布准备阶段,可以有很高信任度。
Git可以为市场营销带来什么
要了解切换到Git会如何影响您公司的市场营销活动,请假设您的开发团队预计在未来几周内完成三个重要的修改:
整个团队正在完成他们在过去6个月中一直在努力的重大的功能。
玛丽正在实施一个更小,不相关的功能,只会影响现有客户。
Rick正在对用户界面进行一些非常需要的更新。
如果您使用集中式VCS这种传统开发工作流程,则所有这些更改都可能会包含在单个版本中。市场营销部门只能发布那个重大功能的公告,其他两个更新的作用就会被忽略掉。
Git非常适用于更短的开发周期,这使得我们可以将它们轻易地分成多个发布版本。这让市场营销人员可以有更多和更频繁的宣传机会。在上述情况下,市场营销可以构建围绕每个功能,针对特定的细分市场,推出三个活动。
例如,他们可能为重大功能准备一个大型的PR推送,为玛丽开发的功能写一篇公司博客文章和简报,以及一些关于Rick的底层UX理论的文章发送到外部设计博客上。所有这些活动可以与单独的版本同步发布。
Git可以为产品管理带来什么
Git对产品管理的好处与营销大致相同。更频繁的发布意味着更频繁的客户反馈和更快的更新反馈。您可以在开发人员编写完代码之后尽快将解决方案推送给客户,而不是等待8周之后的下一个版本。
当优先级更改时,功能分支工作流还提供了足够的灵活性。例如,如果您在发布周期中途,并且想要推迟一个功能,而代替加入另一个时间紧迫的功能,那没有问题。这个推迟的功能可以保留在自己的分支中,直到工程需要它的时候再用。
同样的功能使得管理创新项目,版本测试项目和快速原型作为独立代码库变得容易。
Git可以为设计师带来什么
功能分支可以快速响应设计原型。无论您的UX / UI设计人员想要实现一个完整的用户流程还是简单地替换一些图标,切换到一个新的分支可以让他们在独立地沙箱环境中进行。这样,设计人员可以在产品的真实工作副本中看到他们修改的变化,而这不会破坏现有的功能。
封装这样的用户界面更改可以容易地向其他利益相关者提供更新。例如,如果工程总监想看看设计团队做了什么,他们所要做的就是告诉主管切换到相应的分支。
合并申请进一步带来好处,为有兴趣的各方讨论新界面提供正式的地方。设计师可以进行任何必要的更改,生成的提交将显示在合并申请中,这可以让大家参与迭代过程。
也许为原型提供不同分支最大的好处就是将变更合并到生产中就像将其抛弃一样容易,这没有任何压力。这鼓励设计师和UI开发人员进行实验,同时确保只有最好的想法才能提供给客户。
Git为客户支持带来什么
客户支持和客户成功往往与产品经理不同。当客户打电话时,他们通常会遇到某种问题。如果这个问题是由您公司的软件造成的,那么需要尽快推出一个错误修复。
Git流线型开发周期避免了耽误错误修复,而不用等到下一次大型版本。开发人员可以修补问题并将其直接推送到生产。更快的修复问题意味着让客户更容易满足和更少的重复问题。而不是左右为难,“对不起,我们正在处理”,现在您的客户支持团队可以开始回应“我们已经解决了!“
Git为人力资源带来什么
在一定程度上,您的软件开发工作流程决定了您雇用的人员。我们要聘请熟悉您的技术和工作流程的工程师,但使用Git也提供了其他优势。
员工被吸引到提供职业发展机会的公司,这个公司熟悉如何在大型和小型组织中利用Git的优势,这对任何程序员都是一种福音。通过选择Git作为您的版本控制系统,这个决定可以帮助你吸引具有前瞻性的优秀开发人员。
Git为管理预算带来什么
Git提升效率。对于开发人员来说,它消除了在集中版本控制系统中,在网络上传输提交到合并修改浪费的时间。它甚至通过给初级开发者一个安全的独立工作环境而让项目更安全,这一切都会影响你的工程部门的底线。
但是,不要忘记,这些效率也在开发团队之外。它避免市场营销对不受欢迎的功能投入人力。他们让设计师先于实际产品测试新的界面。他们让你的团队立即对客户的投诉做出响应。
敏捷意味着尽可能找到有效的工作,放大带来成功的努力,消除那些不成功的工作。通过确保每个部门都能更有效地开展工作,Git成为公司所有业务活动的倍增效益的因素。