我一直在使用PHP自定义MVC框架项目,以便我可以在其上构建网站,并将项目放在BitBucket.org上的存储库中。
使用这个框架我想创建多个单独的网站,每个网站都有自己的存储库。
是否有可能,如果是这样,我将如何解决这个问题,将主框架本地复制到文件夹,构建一个新网站,然后将来如果我更新主框架,我可以继续更新我的所有网站。
例如,假设我下载了CakePHP 2.1并在三个不同的目录中构建了三个不同的站点。然后他们将框架更新为2.2,我想将这些更新合并到每个网站项目中。
我对子模块有一个模糊的理解,但我不认为这正是我正在寻找的。 p>
答案 0 :(得分:1)
假设您在github:user/base
有一个基础项目,在github:user/site1
和github:user/site2
有自定义网站项目,每个项目都来自基础项目。也就是说,site1和site2最初是从base进行克隆的,然后你处理它们,它们有它们唯一的提交,base也是如此,所以在这一点上所有这些存储库都彼此不同。
即使存储库存在分歧,它们也有共同的历史。您可以使用git merge
将基础项目中的更改导入自定义站点项目。
我最近自己开始这样做。在site1
和site2
的工作树中,我定义了两个遥控器:
origin
:指向site1中的github:user/site1
,site2中的github:user/site2
upstream
:指向site1和site2 github:user/base
醇>
当我想从基础引入更改时,我使用以下命令:
git fetch upstream
git merge upstream/master
git push
但是,merge
步骤中的冲突很常见,但这可能是因为我的项目非常年轻,而且我在基础上做了相当深刻的改变。如果您能够轻松解决冲突,那就太好了。
答案 1 :(得分:0)
最后一步(根据对master的更改来更新各个站点)需要在Git之外做一些工作。以下是我的设置方法:
主框架存储库是一个Git存储库。它有一些存根位置,用于网站放置的内容:
main/
framework/
js/
bla.js
foo.js
php/
bar.php
css/
start.css
site/
现在为您的网站克隆此存储库并且(这是重要的一点)仅将内容添加到“site”子目录。
在主框架存储库中,只修改“framework”子目录下的内容。
如果您保留该分区,您将能够在网站存储库中简单地“git pull”,并且Git会快速将更改从“main”合并到您的网站存储库中。
如果您需要对框架进行更改,但只会将其应用于一个站点,那么问题就会出现。