由客户按产品Git“主干”/“发布”

我已经使用SVN很长一段时间了,现在我转向git只是为了“时尚”。

我的麻烦是git项目经理/软件开发人员如何管理程序的版本:不是从代码的角度来看,而是从客户的角度来看。

我有一些项目,每个项目都属于一个客户。单独文件夹下的每个客户都有一个“项目”文件夹,可能还有一个“支持”文件夹。项目代码存在于每个“projects”文件夹下。在“支持”下是一些支持性文档/脚本等。

还有一些客户共享产品的情况。其中每个都是代码或配置版本。但它属于同一产品。

现在,只是尝试在硬盘上执行此操作,我被困在每个项目下都有.git。不在客户文件夹下。我不喜欢它,因为我想这意味着我需要有一个wiki(或文本文件?)来记住(!)git存储库所属的地方(例如,如果一台笔记本电脑被破坏了......而我需要获取所有git存储库。我必须以某种方式将存储库放回磁盘上)。

另一方面,将git存储库放在客户文件夹下会更好吗? 但是在那种情况下,如果我需要做“stash/branch/merge”,这会“损害”同一个“customer-umbrella-git”目录下的其他项目吗?

如果一个客户需要为产品Y提供功能X,同时我需要修复项目B的错误,我无法想象会被隐藏/合并/分支的东西。将git存储库放在客户的文件夹下会让我感到害怕。

或者有没有办法在某个地方放置一个git属性和eclipse/idea/windows explorer(是的,确定......)会读到这个并让我快速确认我在哪个客户下有什么项目?

你是如何管理的?

0
你无法确定会发生什么。有些项目的代码是99%相同的。但是有变化。我相信我们所有人都面临这种默默无闻。
额外 作者 Ant,
问题 - 当客户共享产品时,是否所有代码更改最终都提供给两个客户,还是一些客户特定的?
额外 作者 Sarov,

2 答案

我不确定你从哪里得到“git项目经理/软件开发人员从客户的角度管理程序版本”的想法。我使用git,我当然没有为每个客户单独的回购...

无论如何,以下适用于我的团队:

对于有变化但最终会合并的产品

为此使用git的分支系统;每个都有一个单独的分支。一种方法是使用以下分支系统:

  • 一个代表单个“实时”版本代码的主分支
  • 每个客户一个Beta分支。一旦某个功能获得该客户的批准,它就会合并到主分支中,其他Beta分支将重新分配到主客户端以获取更改。
  • 每个功能一个功能分支。一旦该功能为Beta准备就绪,它就会合并到正确的Beta分支中。

对于相似但永远不会合并的不同产品

有三个存储库。一个用于客户/产品A.一个用于客户/产品B.一个子模块/子树(免责声明:我从未使用过子树)用于共享代码。

这样,两个“同一产品的变体”实际上完全被视为单独的产品/存储库;他们只是在他们之间共享代码。

仅适用于单个客户的产品

直截了当。一个产品,一个客户,一个回购。


通过这种方式,每个产品始终只有一个非子模块存储库。

1
额外
整个想法非常有趣。对于第一个项目,您总是向每个客户提供主分支?不要忘记分支是否稳定且对客户A有好处,但是您无法向客户B提供相同的代码?例如,合同终止。或其他法律障碍。或者你不能因为技术差距。缺乏..服务器让我们说...所以你需要维护一个分支(新的更新代码)和主服务器(对于没有升级的客户端)。或者你会将分支拆分为另一个新的全新主git?
额外 作者 Ant,
我会考虑你的方法,并尝试在“宠物”项目上测试这个。而且我需要像“地图”这样的东西直接知道哪个项目属于谁的客户以及其他依赖项...感谢您的时间。
额外 作者 Ant,
@hephestos如何使用分支系统将是特定于组织的。做任何对你最有意义的事情。一种方法可能是拥有另一层间接;完全代码的主分支,客户特定的“实时”分支,客户特定的“Beta”分支,然后是功能分支。正如一般指导原则:当一个产品使用分支时,当它的多个产品使用单独的回购。
额外 作者 Sarov,

我想,你应该改变你的愿景。客户不是有版本和分支,而是产品。特别是,如果某些产品在客户之间共享。因此,您应该在产品文件夹下有“.git”文件夹。

如果您需要为客户提供不同的产品配置,请在产品文件夹下创建“配置”文件夹。

在这种情况下,您将能够向产品和配置添加新功能,并并行修复错误。

还有 Git Flow 版本设计模型可能会有所帮助为你。

0
额外
感谢Anton的回复,是的,这是一个选择。使自己适应机器。但我真的不想先这样做。其次,我想知道是否有其他人思考或考虑过它以及可能发生的其他解决方案。当我正在“独奏”时,提供功能,代码,修复,补丁,我还要保持我给谁,记住日期或版本。然后成为一种奢侈品,在我看来只有“副产品”版本控制。所以我想知道,如果我能说的话,是否有一种“按书”的方式“聪明地”开车。
额外 作者 Ant,