svn创建trunk - svn如何打tag



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

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

/var/report/*
/var/log/exception.log
/var/log/system.log
/var/locks/*
/var/session/*
/var/cache/*
/var/tmp/*
/media/tmp/*

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

对于数据库,通常的做法是在开发环境上执行一个mysqldump,并将其保存在资源库中。

mysqldump -u user -p database > mysqldump.sql

你必须输入你的密码。 现在,回购中的副本是该网站的完整副本。 要设置另一个环境,您将检出整个代码库,然后将MySQL文件导入到数据库中。

记住,当你这样做的时候(以及任何时候你更新数据库的回购,然后想更新其他环境的变化),你将需要改变数据库中的{base_url}和{secure_url}。 我见过一些开发人员创建脚本来自动完成的环境。

最后,尝试对您的网站的开发副本进行所有更改,因为这将有助于保持数据库的同步。 如果您对活动副本进行了更改,但至少也没有在dev中反映这些更改,那么稍后您可能会在意料之外的某个转储中意外覆盖它们,然后想知道功能何去何从。

希望有所帮助。 如果您有其他具体问题,请告诉我。

谢谢,乔

https://src-bin.com

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

到目前为止我所做的是:

  1. 在使用cPanel的主机上设置虚拟主机。 我的“Live”网站(mysite.com)将驻留在〜/ public_html /中。
  2. 创建了一个指向〜/ public_html / dev /的“开发”子域(dev.mysite.com)。
  3. 在〜/ svn /里启动一个SVN仓库 我的回购包含文件夹分支| 标签| 树干。
  4. 在trunk / magento中导入一个新鲜的untarred magento tarball(v.1.3.2.4)到我的repo中。
  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安装。 我现在要做的就是把我的活站点部署到我的开发站点,作为一个起点。 因为app / etc / local.xml文件中的配置不同; 加上Magento将{{base_url}}的值存储在数据库中,这不像从我的开发站点更新svn trunk那么容易,然后导出/导入数据库。

随着我走得更远,我希望有一个简单的途径,通过SVN将我的开发站点上的所有内容都推送到我的实时站点,同时保持数据库同步,除了{{base_url}}的值。 我已经阅读了其他地方的一些论坛帖子,引用使用svn:ignore来避免某些环境特定的文件和目录,但不知道如何在我的实时网站上设置,并确保一切都正确同步。

我应该从我的repo到我的活网站的空间检查一个从trunk / magentoo的基本代码的副本,然后运行安装,然后设置svn忽略local.xml,并假设他们是相同的,除了本地的差异?

在这一点上我只是不知如何下手,不愿意作出任何猜测,以免在不久的将来将所有东西抹掉,重新开始。

作为一个方面说明 - 我还需要为另一个子域创建代码的“演示”分支; 向人们展示,作为概念验证。 当我来的时候,我可能会穿过那座桥。 也许这一切都是有道理的,当我完成这个任务。

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

感谢所有花时间阅读和回复!


Answer #1

我意识到这不完全是你所要求的,但只是想告诉你关于我的设置,因为我认为一旦你开始继续同步开发数据库到生产是不实际的。 您可能会想要更改您的开发数据库进行测试,这些测试并不总是很容易恢复。 在实时环境中构建您的内容(产品等),并偶尔将数据库复制到开发中我发现工作得很好。

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

/app/code/local/MyOrg
/app/design/frontend/default/myorg
/skin/frontend/default/myorg

您所做的任何自定义应位于其中一个目录中。

我在现场服务器上手动管理这个目录:

/app/etc/modules

你只需要在那里创建一个文件,如果你自己创建一个新的模块。



Answer #3

我专门写了Module Manager来解决这些问题。

我不建议版本控制应用程序/ etc / local.xml,以便每个环境可以有不同的数据库凭据,但我建议使用modman版本化其他一切。 另外,我建议让modman运行一个清除Magento缓存并应用数据库更新的脚本,例如这里找到的脚本。

正确使用的时候,你可以“svn commit”到你的trunk,只需在其他环境(包括live)上运行“modman update-all”来更新。 对于1.4更安全的更新,你可以运行

touch maintenance.flag; sleep 2; modman update-all; rm maintenance.flag




development-environment