我在一个存储库中有多个网站项目,每个存储库都有一个WordPress副本。更新WordPress意味着更新所有项目文件夹并保留冗余副本。这对于同步整个文件夹的rsync脚本非常有用。它还为我提供了完整的网站本地副本。
我可以通过多种方式来改进这一点,并希望得到一些反馈。我在Windows上,最近迁移到Subversion。
什么是最好的方法,还有其他替代解决方案吗?
答案 0 :(得分:16)
一种选择是将WordPress位分离到一个单独的存储库中(因为它不是您项目的一部分,它只是您用来构建它们的东西),然后使用svn:externals将其提取到您的项目中正确的位置。
答案 1 :(得分:7)
如果您已经将所有站点集中在一个存储库中,则可以使用svn:externals以各种方式将同一存储库的不同部分拉到一起。
E.g。使用像
这样的存储库repo/site1 repo/site2 repo/commonPieces
你可以在site1和site2 dirs上引入一个“svn:externals”属性,上面写着“commonPieces url-to-repo / commonPieces”。
你明白要避免任何递归循环。但这样做的好处是,所有内容都在同一个存储库中并且可以共享历史记录 - 您可以使用“svn copy”将从site1或site2变得更常见的内容拉到commonPieces中。
比较我正在使用的当前解决方案 - 将我们的单独的项目存储库中的内容迁移到单个也是独立的“coreLibraries”存储库中会丢失开发历史记录。由于我们通常为一个项目开发功能然后决定重复使用它们,因此这种历史记录的丢失发生了很多......
编辑:值得记住的是,虽然site1上的“svn update”将自动使用此“svn:externals”属性更新commonPieces,但site1上的“svn commit”将不会显示site1 / commonPieces中已更改的内容。您必须进行两次单独的提交,一次来自site1,另一次来自site1 / commonPieces。
答案 2 :(得分:3)
您可以添加指向svn:external的WordPress repository定义,也可以使用您使用的插件和自定义项创建自己独立的“自定义WordPress存储库”。
答案 3 :(得分:2)
我经常会为不同的项目重复使用相同的类库,在我的情况下,我更喜欢为每个项目分别使用一个 - 冻结 - 副本。唯一的原因是我不想打破我暂时没有工作的项目,以防其中一个库过时了。但是,如果每个项目都是某个主要项目的一部分,那么你就会不断努力。
答案 4 :(得分:1)
也许我只是以错误的方式使用Subversion,但我们的文件夹结构如下所示
中继线 - 核心 - 消息 - 超强功能应用#1 - 超强功能应用#2 - 超强功能应用#3
因此,我们所有的应用程序共享相同的Core和Messaging组件。唯一的缺点是,当人们分支时,他们会得到所有的应用程序,但这比任何事情更令人烦恼。
答案 5 :(得分:1)
更好的方法是将wordpress拉出到存储库的单独分支中。然后,为每个存储Wordpress路径的网站引入配置文件。您可以将此位置附加到php include路径。这是一个图表:
Svn repo-v
|-Websites--v
| |---One
| |---Two
|-Wordpress-v
|---branch one
|---branch two
这有几个好处:
答案 6 :(得分:0)
传统上一切都应该在SVN上分开。听起来你正在使用SVN作为从不同区域获取代码并将它们拼接在一起的手段。
所以你使用SVN作为构建工具。最好是:
答案 7 :(得分:0)
什么是最好的方法,还有其他替代解决方案吗?
不要偏离主题,但我建议你仔细看看 git. 我们日复一日地用子模块做这种事情,这是一件轻而易举的事。
仅供参考 - 由于这类问题,大约2年前从SVN迁移过来。