如何将SCM与PHP应用程序(如Wordpress)一起使用?
我使用Wordpress运行博客,最近也成为SCM的忠实信徒。我真的很想让我的网站处于颠覆状态(这就是我现在正在使用的,也许git会在以后出现),但是我还没有想到正确的方法。基本上,我的存储库当前是通过"实施"目录和"资源"目录设置的,其中实施将保存最终将发布到实际站点的内容。我希望能够在本地预览我的网站,而不必出于明显的原因将其上传到服务器。但是,为此,我发现我需要在本地实际安装Wordpress(而不仅仅是将远程站点复制到本地框中)。这是在Wordpress.org上告诉我的。
这带来了能够在安装中使用SCM的问题,因为我需要不时地升级本地站点,但这会与Subversion产生不一致,因为它无法跟踪发生的事情,因为外部系统正在破坏其存储库结构。那只是行不通的。
我最初的意愿是尝试仅对主题信息进行SCM,因为这确实是我所拥有的唯一内容,而其他所有内容实际上只是我平台的一部分(实际上与Apache或者PHP没什么不同)。但是,多数民众赞成在我的理解崩溃。我如何才能选择性地仅对目录结构的一部分进行SCM,以及如何维护Im所在的Wordpress的配置?
无论如何,我确定其他人已经解决了这个问题,并且该解决方案可能适用于许多类似于Wordpress的应用程序(Drupal,phpBB,phpMyAdmin等)。你是怎么做到的?
解决方案
实际上这并不难,但是在这里我将其分解为一些建议。我们所描述的或者多或者少是一个"供应商删除"目录。基本上,这是我们在SVN中维护代码的地方,但是随着新内容的出现,将其替换为新内容。
我们应该从一个空目录开始。设置SVN信息库,然后在空目录中进行SVN签出(该目录仍然为空,除非会添加一个隐藏的.svn目录)。接下来,通常在此处安装wordpress,然后将其文件添加到svn。我们可能只是" svn add *",但要小心,并删除所有不需要版本化的内容(如果适用,请上载/ temp / cache目录)。如果需要,还可以使用svn:ignore属性来告诉它忽略某些目录或者文件类型。运行" svn stat"以向我们显示要检入的内容,等等,一切都很好之后,提交它(svn commit)并从那里开始工作。现在,我们已经在SVN中基本安装了wordpress。
在工作和进行更改时,请提交它们。
当需要升级时,只需将wordpress替换为现有的东西即可。确保在替换目录时,替换内容,而不是整个目录本身。我们不想丢失每个文件夹中隐藏的.svn文件夹,因为那样会使搞乱颠覆。做一个svn stat和/或者svn diff来找出已更改的内容(如果有的话),以及大部分是新添加的内容。此时,我们可以再次提交。
要在生产站点上部署,我们可以执行svn导出,或者定期检入Web目录。如果我们进行结帐,请确保仅在准备好部署时进行更新。
我认为升级部分甚至比这还容易一些;我使用2.5和2.6的最新版本以及WP的最新版本进行此操作。
由于Wordpress提供所有内容作为Subversion存储库,因此获得稳定标签的当前版本就像创建Blog目录一样简单,然后
# svn co http://svn.automattic.com/wordpress/tags/2.6.2/ (replace the current rev here for the first check out).
升级可用后,只需导航到博客目录并运行
#svn sw http://svn.automattic.com/wordpress/tags/2.6.3/ (or whatever wordpress rev you're updating to)
如gregmac所述,然后发布到生产站点只是一种导出
但是,我认为这不能回答实际问题,我将其解释为"如何在升级Wordpress的同时将自定义内容保留在SCM中"。我们对要处理的目录的理解几乎是目标(我们自己的个人博客的主题,pplugins将包含在wp内容中,因此我们只需要将其放入Subversion中即可),但我对Subversion的了解还不够熟练我们将如何将目录放置到我们自己的存储库中,同时仍然能够依靠Wordpress的存储库进行升级。我在我网站上的那些文件的" SCM"是wp-content目录的服务器外副本。
从这个角度来看,gregmac的答案可能对我们更好。
My initial inclination is to try to just SCM my theme information as this is really the only stuff that I ‘own’ while as everything else is really just part of my platform (no different than Apache or PHP, really). However, that’s where my understanding breaks down. How can I selectively SCM only part of that directory structure, and how can I maintain the configuration of Wordpress that I’m on?
这正是我对博客进行版本控制的方式。我发现它很好用。通常,如果我们正在编辑WordPress的文件,那说明我们做错了,升级时会感到痛苦。
为了简化这一过程,我使用了TortoiseSVN。我导航到Windows资源管理器中的/ wp-content / themes /目录,右键单击自定义主题的目录,然后从上下文菜单中选择导入。导入所有现有文件后,我对该目录执行了检出操作,一切都已设置。
这是我正在测试的方法。设置会花费一些时间,但是(理论上)我们应该进行面向未来的安装:
正确安装WordPress
还可以查看svn:externals来获取插件更新:
使用svn:externals安装WordPress插件