Magento&Subversion(SVN) - 开始开发环境?

Pla*_*lux 19 svn development-environment magento

我正在建立一个Magento网站,这是迄今为止我曾经使用过的最庞大的软件包.我决定建立一个合适的开发服务器并使用Subversion进行版本控制.我遇到了几个障碍,需要一些帮助.

到目前为止我做了什么:

  1. 在使用cPanel的主机上设置Web主机.我的"直播"网站(mysite.com)将驻留在〜/ public_html /中.
  2. 创建了一个指向〜/ public_html/dev /的"开发"子域(dev.mysite.com).
  3. 在〜/ svn /中启动了一个SVN存储库.我的repo包含文件夹分支| 标签| 树干.
  4. 将一个刚刚解开的magento tarball(v.1.3.2.4)导入我的主干/ magento回购中.
  5. 创建了两个数据库a.mysite_live和b.mysite_dev.
  6. 检查了我的repo中的magento代码到〜/ public_html/dev /(dev.mysite.com)
  7. 跑了最初的Magento安装程序,它填充了我的mysite_dev Db并创建了一些配置文件(app/etc/local.xml是我所知道的唯一一个 - 可能还有其他的?).

这是我被困的地方:

所以我在我的开发空间中有一个功能齐全的Magento Install.我现在要做的是将我的实时站点部署到我的开发站点,作为起点.因为app/etc/local.xml文件中的配置不同; 加上Magento将{{base_url}}的值存储在数据库中,这并不像从我的开发站点更新我的svn trunk,然后导出/导入数据库那么容易.

随着我的进一步发展,我希望有一条直接的路径通过SVN和我的实时网站推送我的开发网站上的所有内容,同时保持数据库同步,除了{{base_url}}的值.我在其他地方读过一些使用svn引用的论坛帖子:忽略以避免某些特定于环境的文件和目录,但不知道如何在我的实时网站上设置并确保一切都正确同步.

我应该从我的repo到我的实时网站的空间查看trunk/magentoo的基本代码副本,然后运行安装,然后设置svn忽略local.xml,并假设除了本地区别之外它们是相同的吗?

在这一点上,我只是不知道如何继续,并且不愿意做出任何猜测,以防它不得不擦掉所有东西并在不久的将来重新开始.

作为旁注 - 我还需要为另一个子域创建代码的'Demo'分支; 向人们展示作为概念验证.当我来到它时,我可能只是越过那座桥.也许在我完成这项任务时,这一切都有意义.

tl; dr版本 - 如何使用SVN管理Magento开发和实时代码和Db?

感谢大家花时间阅读和回复!

Jos*_*tey 21

首先要检查已安装的程序版本.这样,repo中程序的副本就是一个可以实际使用的工作副本.然后,您将需要忽略一些文件和目录,以便您可以运行其他环境.local.xml是一个很好的例子,但也设置忽略以下内容:

/var/report/*
/var/log/exception.log
/var/log/system.log
/var/locks/*
/var/session/*
/var/cache/*
/var/tmp/*
/media/tmp/*
Run Code Online (Sandbox Code Playgroud)

可能有其他人,但这应该给你一个良好的开端.如果您认为可以对local.xml进行更改(并且可能),请将local.xml复制到local.xml.dist并将.dist版本检查到repo中.当您结帐到其他网站时,您仍然需要手动进行更改,但更容易跟踪.

对于数据库,通常的做法是在dev环境中执行mysqldump并将其保留在存储库中.

mysqldump -u user -p database > mysqldump.sql

您必须输入该密码.现在,repo中的副本是该站点的完整副本.要设置另一个环境,您将检查整个代码库,然后将MySQL文件导入数据库.

请记住,当您执行此操作时(以及任何时候在repo中更新数据库,然后想要更新其他环境中的更改),您将需要更改数据库中的{base_url}和{secure_url}.我见过一些开发人员创建脚本的环境,可以自动完成.

最后,尝试对您网站的开发副本进行所有更改,因为这有助于保持数据库同步.如果您对实时副本进行更改而至少也没有在dev中反映它们,您可能会在以后使用其中一个转储意外覆盖它们,然后想知道您的功能在哪里.

希望有所帮助.如果您有其他具体问题,请与我们联系.

谢谢,乔


Vin*_*ent 9

我意识到这不是你要求的,但只是想告诉你我的设置,因为我认为一旦你上线就继续将dev数据库同步到生产是不切实际的.您可能希望对您的开发数据库进行更改以进行测试,这些更改并不总是很容易恢复.在实时环境中构建您的内容(产品等),偶尔将数据库复制回开发,我发现效果很好.

对于我的项目,我通过从头开始安装Magento来构建我的实时环境,并在这些点上检查了SVN中的目录:

/app/code/local/MyOrg
/app/design/frontend/default/myorg
/skin/frontend/default/myorg
Run Code Online (Sandbox Code Playgroud)

您进行的任何自定义都应位于其中一个目录中.

我在实时服务器上手动管理此目录:

/app/etc/modules
Run Code Online (Sandbox Code Playgroud)

如果您自己创建一个新模块,则只需要在那里创建一个文件.