Git + Drupal工作流程

时间:2010-06-01 12:54:47

标签: git drupal

我是Git初学者,提出了工作流程问题。我学到了很多命令,我知道事情是如何运作的,但我似乎无法找到合适的工作流程。喜欢有一些建议。 [注意,我是唯一一个从事我的项目的开发人员]

  1. 一位朋友曾告诉我,最好在live服务器上工作,而不是在localhost上工作以避免遇到环境特定问题。这是真的吗?

  2. 我为所有Drupal网站使用相同的基本主题。当我在其中一个进行更改时,我目前需要将其复制并粘贴到其他大约10个地方。有没有办法将这个基本主题保存在一个地方并让其他网站从中抽取? Github可能吗?

  3. 如果我想对代码库和数据库进行“完整”备份 - 唯一的方法是将数据库导出为sql文件并提交整个内容吗?

  4. 感谢您的帮助!

    特里

4 个答案:

答案 0 :(得分:5)

  1. 通常,您应该尽可能靠近生产服务器在服务器上运行测试,而不是实际的实时服务器,因为这会在测试期间中断实时站点。由于Drupal旨在在各种服务器上运行良好,因此使用类似的服务器并不相关。

  2. 您应该使用git pull而不是copy-paste。因为git具有分散设计,所以你并不需要像github这样的中心位置。如果这对您的工作流程有用,请使用它,但如果没有,您可以直接从一台服务器拉到另一台服务器。

  3. Drupal没有很好的解决方案在数据库中存储如此多的配置信息并保持同步。同步整个数据库是一种方法。许多模块还具有可导出功能,它基本上将数据库中的数据保存到代码中,因此您可以将其与其余代码同步。 Features可能是尝试使用可导出模型的最简单方法,看看它是否适合您。

答案 1 :(得分:2)

  1. 我理解你朋友的观点,但我坚决不同意在生产服务器上运行(可能是错误的,可能是)破坏的开发代码。更好的是,下载VirtualBox并设置一个与您部署的服务器配置相同的VM。使用git为您部署的每个版本创建“标签”,这样您就可以获得有关网站“版本”的有用参考点。
  2. 看看“git submodules”。你几乎肯定需要了解这些是什么,但如果你来自颠覆背景,你可能会发现它们非常令人困惑。子模块基本上是对其他存储库的引用,因此您可以通过软链接指向主项目中的另一个项目。但是,它们必须是自包含在目录中的。
  3. 我个人喜欢在我的存储库中保留一个schema.sql文件(只是一个用SQL编写的空白模式),但我不认为在存储库中保存完整的数据库备份是明智之举,即使您可以。将它们分开。
  4. 如果你对版本控制系统的整体想法不熟悉,那么你最好只是双脚跳进去。随着你的到来,一切都会开始变得有意义。当然,就其本质而言,你不可能做任何永久性伤害,因为你可以来回滚动。

    一个坚定的建议:经常提交。每次进行有效的更改时,都要提交。较小的提交比大的提交更容易处理。例如,如果您需要撤消损坏的更改,那么如果您的提交是原子的,那么您更有可能在不删除同时提交的工作代码堆的情况下撤消它。

答案 2 :(得分:1)

用于转储drupal db regulary我使用

A) 用于创建名为“db”的空的未连接分支的git别名 在http://gist.github.com/360294

找到别名

b)中 以下命令,使用伟大的maatkit工具来清空 一些不感兴趣的表并将数据库转储到单独的文件中, 没有评论

mk-find DBNAME --tbllike "cache%" --exec "TRUNCATE %D.%N"; 
mk-find DBNAME --tbllike "watchdog" --exec "TRUNCATE %D.%N"; 
git checkout db && \
cd /GITROOT/db && rm -rf * && \
mk-parallel-dump -d DBNAME -- mysqldump --skip-extended-insert --skip-comments --skip-lock-tables '%D' '%N' \> '%N.sql'

答案 3 :(得分:0)

  1. 一般来说,环境越接近越好。在尝试诊断和追踪问题时,这一点尤为重要。并不是说你的每个环境(dev,qa,prod等)都不可能有不同的设置,但我肯定会说如果可能的话,最好保持一致。

  2. 为共享主题设置git存储库是一个好主意,可以通过复制/粘贴更改来删除问题继承。无论是在自己的服务器上设置git存储库还是使用像github这样的服务,都是个人偏好的问题。

  3. 是的,要获得备份中的所有内容,除了拥有代码存储库之外,还需要执行数据库的sqldump。话虽如此,请自由使用Features模块,尽可能多地获取代码中的配置。这在环境之间移动时也很有用,并且能够跟踪代码的其余部分跟踪更改的版本。要添加到您的功能中的一些最重要的项目将是内容类型,视图,权限,变量(通过Strongarm),块放置(通过Context),菜单等。