我正在尝试使用Drupal为我的工作流程找到最佳版本控制策略。我每次安装都有多个站点,我很确定每个站点都有一个单独的存储库。据我所知,值得考虑的VCS是:
我知道这些在一般情况下是如何相互比较的,但是想要了解Drupal的优点/缺点。如果您正在使用(或已经使用过)Drupal中的任何一个:
答案 0 :(得分:4)
答案 1 :(得分:3)
我们的设置基于Subversion。我们有一个小的(少于4个)可以对网站进行更改的人数,我们认为像Git这样的DVCS,但结论是有点矫枉过正。
我们在提交任何更改之前使用SimpleTest测试我们的模块,如果我们添加了一个未涵盖的功能,我们会进行新的测试。在我看来,在您提交更改之前的这一测试步骤远比您最终决定使用的版本控制程序重要得多。
在处理这些程序时,您应该记住的另一个重要事项是,您不应该只是定期检查以更新生产站点上的代码。这将留下隐藏的.svn或其他目录,其中可以包含密码和其他敏感数据。
相反,您应该从您的sites / all / modules目录中删除该模块,然后使用svn export
来获取最新代码的干净版本。
版本控制是管理站点的系统的一部分,请务必通过定期备份数据库本身(与svn提交同步是理想的)来跟踪存储在数据库中的站点配置,并通过存储如果可以,可以在主站点外部定义CCK内容类型。您可以导入和导出内容类型和视图,以便在需要重建站点配置时它们不会卡在数据库中。
根据您的工作流程,Deployment模块是另一个需要考虑的事项。
答案 2 :(得分:1)
因为我问过这个问题,Drupal前面有一个相当令人惊讶的发展:他们有sort of maybe chosen a replacement for CVS!引用大量社区支持以及对分布式VCS的需求,他们可能会转向git。
由于更糟糕的文档和跨平台支持(与Bazaar和Mercurial相比),我之前已经考虑过并通过了git,但从那以后他们在这两个方面都有了很大的改进,现在看来它现在是一个非常好的选择,无论你的情况如何
因此,如果您正在考虑为“core”或contrib模块做贡献,或者为社区编写自己的模块,我强烈建议您使用git,因为它将获得Drupal社区中最多的支持和用户。因此,即使您只是跟踪自己的网站,它也可能是一个不错的选择。
答案 3 :(得分:1)
Drupal 没有任何特定要求。
这是Git / Mercurial与Subversion:
.gitignore
允许告诉您要忽略的所有文件.svn
文件夹(强制使用慢速导出功能或自定义批量删除它们)git add . && git commit -m "My first commit"
显然,我偏向 Git 和 Mercurial 。两者都是最近的。我个人更喜欢 Git 因为:
你仍然应该注意 Mercurial 最近引起了Google的注意(对于 Google Code )并且它的学习起来有点简单。您可以从http://progit.org/book/学习 Git (前3章应该足够了)。
对于项目文件夹结构,我建议您查找其他答案。请记住您的目标(例如:测试,在各种计算机上快速部署......),以及备份您的存储库。这意味着将项目文件夹复制到Git / Mercurial的远程位置,并复制Subversion的Subversion服务器存储库。除此之外,所有人都有钩子,允许你在提交之前运行测试,并且他们有bug跟踪系统的接口。
至少但并非最不重要的是,如果您在项目中在版本控制下使用其他库,请考虑一下! Git 和 Mercurial 允许跟踪 Subversion 存储库(通过git-svn
),而不是相反。 Mercurial 还可以跟踪 Git 存储库,而不是相反(尚未)。通过跟踪远程存储库,您可以获得最新版本,其中包含您将使用的远程源代码的更改日志。它还允许您修改。
答案 4 :(得分:0)
我说这是一个比git更具SVN经验的人。开发正朝着git发展,远离SVN等中央系统。
就我个人而言,我喜欢的是在网站的不同测试版本中来回跳转是多么容易(使用分支机构)。