使用各种VCS(版本控制系统)来跟踪Drupal项目的优点是什么?

时间:2010-02-09 12:08:44

标签: version-control drupal dvcs

我正在尝试使用Drupal为我的工作流程找到最佳版本控制策略。我每次安装都有多个站点,我很确定每个站点都有一个单独的存储库。据我所知,值得考虑的VCS是:

  • SVN
  • Bazaar(bzr)
  • GIT中
  • Mercurial(hg)

我知道这些在一般情况下是如何相互比较的,但是想要了解Drupal的优点/缺点。如果您正在使用(或已经使用过)Drupal中的任何一个:

  • 你的设置是什么?
  • 您选择的VCS如何适用于管理Drupal项目?
  • 什么不是?

5 个答案:

答案 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:

  • Git (但 Mercurial 也是如此)
    • 行结尾将被标准化(无论RL + LF还是LF或......它将被存储为'行返回'并按OS格式说明解压缩)
    • 单个文件.gitignore允许告诉您要忽略的所有文件
    • 您的每个文件夹中都没有.svn文件夹(强制使用慢速导出功能或自定义批量删除它们)
    • 本地设置极其简单
      1. 下载Git并启动命令行
      2. 转到项目文件夹
      3. git add . && git commit -m "My first commit"
      4. 完成后,您现在可以更改文件并恢复为您的第一次提交
    • 很高兴通过GitHub
    • 在OpenSource项目中共享代码
    • 如果你想要一个简单的GUI(在成本上有一些高级功能),在Windows上有TortoiseGit,但是它比 TortoiseSVN
    • 更难安装
  • 颠覆 SVN
    • 创建自己的私人服务器稍微简单
    • 如果您想要一个简单的GUI(以一些高级功能为代价),则在Windows上有ToirtoiseSVN
    • 清除客户端/服务器:也意味着您必须让服务器运行(可能与客户端在同一台计算机上)才能使用客户端
  • 我不能多说 Bazaar 因为我没有用过它

显然,我偏向 Git Mercurial 。两者都是最近的。我个人更喜欢 Git 因为:

  • 它不需要Python
  • 便携式版本
  • 它允许我重写历史

你仍然应该注意 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。虽然Git文档仍然可怕 - 免费的http://progit.org书籍和http://gitcasts.com使您可以轻松学习如何使用。由于它非常独立,因此可以随时随地轻松处理项目(与SVN相比)。

我说这是一个比git更具SVN经验的人。开发正朝着git发展,远离SVN等中央系统。

就我个人而言,我喜欢的是在网站的不同测试版本中来回跳转是多么容易(使用分支机构)。