2010-06-01 88 views
6

我是一个Git初学者工作流的问题。我学到了很多命令,并且我知道事情是如何工作的,但我似乎无法弄清楚正确的工作流程。喜欢有一些建议。 [注意,我是唯一的开发工作在我的项目]的Git + Drupal的工作流程

  1. 一个朋友曾经告诉我,这是最好的活的服务器上运行,而该本地主机上,以避免陷入环境中的具体问题。这是真的?

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

  3. 如果我想做一个代码库和数据库的'完整'备份 - 唯一的方法是将数据库导出为一个sql文件并提交所有内容?

感谢您的帮助!

特里

回答

5
  1. 在一般情况下,你应该运行尽可能靠近生产服务器成为可能,但不是实际的现场服务器的服务器上的测试,因为这会在测试过程中折断线的站点。由于Drupal设计在各种服务器上运行良好,因此使用类似的服务器并不重要。

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

  3. Drupal并没有很好的解决方案来在数据库中存储这么多配置信息并保持同步。同步整个数据库是一种方法。许多模块也具有可导出的功能,基本上可以将数据库中的数据保存为代码,以便您可以将其与代码的其余部分同步。 Features可能是实验可导出模型的最简单方法,并且看看它是否适合您。

+0

感谢您的答复斯科特。 所以基本上,#2(用于多个网站相同的基本主题),我应该: 1.使git仓库在/主题/基主题某处 2.要让所有变更/编辑在这里3. 这个克隆回购在我所有的子域 4. Git拉变化到子域 再次感谢, 特里 – saltcod 2010-06-01 14:30:09

+0

我会改变1. to/sites/all/themes/base-theme,否则是。 (通常最好将自定义内容保留在根主题和模块目录之外,这样可以使用Drupal本身更容易地升级它们。) – 2010-06-03 13:11:24

+0

我同意Scott的所有答案,但会认为可以将整个网站转化为Git(包括数据库)。如需完整的书面报告,请访问:http://www.opc.com.au/web-development/drupal-release-management-drush-and-git 披露:我写了文章。 @markdorison也使用了Strongarm和Context模块。 – 2011-05-03 02:18:15

2
  1. 我理解你的朋友的观点,但我与运行(潜在的,呃,可能)破开发代码在生产服务器上坚决不同意。更好的办法是,下载VirtualBox并设置一个与你部署的服务器配置相同的虚拟机。使用git为您部署的每个版本创建“标签”,以便为您的网站的“版本”提供有用的参考点。
  2. 看看“git submodules”。你几乎肯定需要知道这些是什么,但如果你来自颠覆背景,你可能会发现它们很混乱。子模块基本上是对其他存储库的引用,因此您可以在主项目中的软链接到另一个项目。但是,它们必须自成一体。
  3. 我个人喜欢养schema.sql文件文件在我的仓库(只是一个空白的模式,在写SQL),但我不认为保持你的完整数据库备份存储库中的将是一个明智的做法,即使您可以。保持分开。

如果您对版本控制系统的整体概念还不熟悉,那么您可能更喜欢使用双脚。随着你走,这一切都将开始有意义。当然,就其性质而言,由于您可以来回滚动,因此您不可能造成任何永久性伤害。

一家公司推荐:频繁地进行提交。每当你做出一个有效的改变时,提交。较小的提交比较容易处理。例如,如果您需要撤销已损坏的更改,那么如果您的提交是原子级的,那么如果不移除同时提交的一堆工作代码,则更有可能将其撤消。

1

展开反倾销调查的Drupal分贝regulary我使用

一) 创建一个名为 “DB” 一空,未连接的分支git的别名 找到http://gist.github.com/360294

B中的别名) 的以下命令,使用伟大的maatkit工具,清空 一些不感兴趣的表,并将db转储为单独的文件, 没有评论

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' 
0
  1. 一般情况下,越接近你的环境是彼此更好。这在尝试诊断和追踪问题时变得尤为重要。这并不是说你的每个环境(dev,qa,prod等)都不可能有不同的设置,但是我肯定会说如果可能的话,最好保持一致。

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

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