Ach*_*him 14 git project web-deployment
有没有更好的建议来控制Web项目,在几个客户项目中使用git进行小的随机更新?
我想使用git进行Web项目的版本控制.与几乎所有其他提案的主要区别在于,这是一个使用HTML,JavaScript和一些PHP文件的Web项目 - 没有中央库被一个或多个程序使用,就像在典型的Linux软件包中一样.
我所有不同的Web项目都是针对不同的客户,基于相同的平台文件,我估计80%的文件是相同的(称为平台),20%是针对不同的客户进行修改以满足他们的需求.这里的问题是,我不知道我们需要客户更新哪些文件 - 详细地说每个客户都不同.
最好的方法是将平台特定文件保存在一个目录中,并将这些文件与客户特定文件重叠在另一个目录中.为了用git来解决这个问题,到目前为止我没有发现什
这里最好的方法是什么?
这实际上是一个体系结构设计问题,而不是源代码管理问题。尽管如此,这是一个常见且有趣的问题,所以我为您提供一些有关如何解决体系结构问题的一般建议。
问题不是这里的Git。问题是您没有充分地区分相同的内容以及客户之间将要更改的内容。确定正确的设计模式后,适当的源代码控制模型将变得更加明显。
考虑一下Russ Olsen的这段话:
[将可能改变的事物与可能保持不变的事物分开]。如果您可以确定系统设计的哪些方面可能会发生变化,则可以将这些位与较稳定的部分隔离开来。
奥尔森·拉斯(2007-12-10)。Ruby中的设计模式(Kindle位置586-588)。培生教育(美国)。Kindle版。
我对您的应用程序不够了解,无法提供具体建议,但是一般而言, Web项目可以从几种不同的设计模式中受益。模板,组合或原型模式都可能适用,但是有时讨论模式会使问题更加困扰。
以下是我个人要做的事情:
重构应用程序以最大程度地减少客户之间的变化之后,您可能甚至根本不需要将代码分开,除非您试图对每个客户端隐藏多态代码。如果是这种情况,那么您当然可以在那时候研究子模块或单独的分支,而不必承担分支之间繁重的工作。
最后,如果发现可以将更改隔离到几个子目录中,则Git支持符号链接。您只需将所有不同的代码保存在开发分支的每个客户端子目录中,然后将文件符号链接到每个客户端发行分支上的正确位置。您甚至可以使用某些Shell脚本或在自动部署期间自动执行此操作。
这使所有的开发代码在一个地方,便于比较和重构(如开发分支),但能保证代码真正做需要为每个版本不同的是,它需要的地方,当你将其推广到生产中。