对于从事 Drupal 项目的小型分布式团队来说,最佳实践是什么?

2023-11-23

经过一番研究,我们选择在下一个项目中与 Drupal 合作,我们是一个分布式团队。

由于 Drupal 将所有内容存储在数据库中(基于我们到目前为止所看到的),作为一个分布式团队,我们如何才能在这个项目上协同工作?我们应该采取哪些最佳实践?

我们考虑过使用共享数据库服务器来完成此任务,但它只会破坏我们启动此项目所需的性能。对此有什么建议吗?


杰里米的回答(+1)已经相当全面了。以下是一些其他更实用的建议没有特别的顺序.

免责声明:这对我有用。其他人可能有其他建议,甚至不同意。如果是这样的话,我会非常高兴听到反馈和替代/更好的建议!

  1. 强调每个团队成员都应该通过更新代码和数据库来开始他/她的会议。您可以通过组合轻松编写所有这些内容的脚本ssh and rsync命令。我有时会创建一个脚本(update-project.sh),从存储库更新代码并立即从主服务器下载并导入最新的数据库。

  2. 永远不要忘记打电话http://example.com/update.php每次更新代码时。每次提交后在暂存站点上运行此命令,并在每次更新/拉取/签出后在本地计算机上运行此命令。

  3. 通过 SQL 查询而不是使用 GUI 对数据库进行任何更改。这样你只需将该查询包装到一个hook_update_N()实施在你的你的模块.install文件,并且你是安全无害的(如果你遵守第 2 点!)[一些 gui 工具输出等价的......这也很方便!]。

  4. 只要有可能,请包含在hook_update_N()模块设置也发生变化。这并不总是可能的。如果不可能:请参阅第#7 点和第#8 点。

  5. 创建或修改视图时,完成后将其导出到文件。与第 3 点相同的原则,但适用于视图。顺便说一句,这种方法还有一个好处是提供回滚机制,以防您后来意识到自己犯了错误。

  6. 使用主存储库。不要选择太多的分布式版本控制系统。始终从同一个中央存储库拉取和推送代码。

  7. 始终在您的提交中包含评论。特别是如果某些代码更改更改了某些功能/API/通用逻辑,请务必在提交消息中包含警告。如果需要,可以将详细信息放入changelog.txt 文件中。

  8. 提交时,立即在主数据库上重现您尚未设法包含在您的数据库中的任何手工数据库更改。hook_update_N()执行。如果您的团队成员按照#1 中所述开始他们的会议,那么这是必须的。

  9. 对版本控制下的内容要有选择性。例如:排除sites/default/settings.php但评估哪些内容(如果有的话)需要进行版本控制sites/default/files(开发需要图像吗?和附件?)。

  10. 有一些有用的贡献模块可以提供帮助。 Like 进出口,它允许您在存储库中管理您的 CCK 和视图或节点导出它允许您导出节点,然后将它们导入到另一个 drupal 安装中。

  11. Use the 简单测试模块广泛地。这是一个good无论如何,想法,但是当在团队中工作时great想法:这样您就可以确保您的更改不会破坏其他人的工作。

  12. 玩得开心!我喜欢团队合作,并且我相信人们应该尽可能地尝试这样做。它更有趣,更多的学习,最重要的是......更好的代码! :)

加分点(并非特指团队发展):

  • 尽量不要使用临时服务器来插入实际内容。理想情况下,您应该仅在代码以某种方式冻结或使用导入路由/模块时才开始创建内容:drupal 在表之间分散信息很多,并且钩子系统使得很难跟踪哪些模块在何处存储了哪些信息:如果您开发在具有真实数据的数据库上,您将不可避免地最终在某个时候破坏一些表,并且您可能只有在投入生产的前一天才意识到这一点。 :(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于从事 Drupal 项目的小型分布式团队来说,最佳实践是什么? 的相关文章

  • 如何在drupal中获取某个父级下面的所有菜单项?

    我实际上只需要某个菜单项下面第一级的 mlid 和标题文本 这就是我现在正在做的事情 它有效 但我怀疑可能有一种更 drupal 的方式 Get all the children menu items below Style Guide a
  • 有关 ajax 回调和 drupal_process_form 的帮助

    我有一个通过仅在视图模式下显示的 nodeapi 添加的表单 用户可以从选择菜单中选择一个项目 他们的选择将通过发生更改时的 hook menu 回调自动保存到数据库中 如果用户禁用了 javascript 它将使用表单 api 正常提交
  • 包设置不会传播到分布式的工作人员

    Info julia version julia version 1 6 0 lscpu root MyPackage lscpu Architecture x86 64 CPU op mode s 32 bit 64 bit Byte O
  • 建议的解决方案:在分布式环境中生成唯一 ID

    我一直在浏览网络 试图找到一种解决方案 使我们能够在区域分布式环境中生成唯一的 ID 我查看了以下选项 除其他外 雪花 推特 这似乎是一个很棒的解决方案 但我只是不喜欢仅仅为了创建 ID 而必须管理另一个软件所带来的额外复杂性 现阶段缺乏文
  • Drupal 7 - 在#link表单类型条目中添加HTML?

    我需要将 HTML 标记添加到 titleDrupal 7 的领域 type链接表单元素 输出应该大致如下所示 a href saveprogress nojs 123 class ajax processed span class mym
  • 如何更改页脚 由 Drupal 及其链接提供支持?

    我正在 Drupal 上工作 我想知道如何更改由 Drupal 提供支持的页脚文本以及为其提供的链接 我想要 版权所有 2012 我的网站名称 保留所有权利 我无法得到它 任何人都可以帮助我 只需转到 结构 gt 块 gt 添加块 将块标题
  • 如何在不使用 API 的情况下向 Drupal 6.x 注册用户?

    我们必须有一个通过用 java 编写的 Web 服务可用的 注册 方法 因此从今往后我们无法访问 Drupal API 但我们需要能够成功注册用户 简单地将用户添加到用户表中是行不通的 因为新创建的用户永远无法成功登录 我再次喜欢 Drup
  • Drupal 节点揭秘

    我是 Drupal 的新手 希望了解这个平台的工作原理 具体来说 我对 Node 对象感到困惑 这是什么东西 Content Type是怎么进来的 看起来整个 Drupal 就是节点 节点 节点 很想听听您的见解 当您第一次接触 Drupa
  • Drupal 中表的节点引用

    I have Drupal with CCK I have a content type named Article This Article has 5 Node references I m using the table field
  • 如何在JQuery中选择除单击元素之外的所有类?

    我有一个在 Drupal 上开发的网站 我使用一个名为 collapsiblock 的模块 它基本上是一个 JQuery 插件 来实现类似手风琴的效果 它对我来说工作得很好 尽管它还处于测试阶段 但我想修改它 以便当用户单击手风琴的一项时
  • 访问回调 user_is_anonymous 的反义词是什么?

    我知道在 drupal 模块中使用它来指定只有匿名用户才能看到该模块 仅指定登录用户的回调是什么 我有一个页面 我只想让登录用户访问 谢谢 它是用户 is logged in http api drupal org api function
  • 如何摆脱 Drupal CSS 样式表?

    我正在努力完成以下任务 我需要使用 Drupal 6 作为项目要求 但我想将它与我自己的 HTML 和 CSS 样式表一起用于每个节点 视图 面板等 问题是 无论什么主题 我总是发现 Drupal 适用于我的 HTML 内容 包括我的 CS
  • 更改 Drupal 中的节点创建标题?

    假设我有一个名为 产品 的节点 当我创建这样的节点时 它将始终显示 创建产品 作为节点的标题 创建节点时如何更改此标题 你的意思是你有一个内容类型 http drupal org node 21947 产品 创建 产品 类型的节点时的 创建
  • 分布式版本控制系统[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想和我的程序员同事一起实现分布式版本控制系统 他们分散在周围 全部使用不同的 IDE 或不使用 IDE 也使用不同的操作系统 我对整个场
  • 如何在 Drupal 7 中打印自定义菜单?

    我在 Drupal 7 中创建了一个菜单 并创建了该菜单下页面的链接 我将新菜单命名为 站点菜单 在我希望菜单出现的 page tpl php 中 我已将其放在适当的位置 清除缓存并刷新页面后 我的菜单不会出现 我很困惑 任何帮助将不胜感激
  • Drupal 6 和 7 从标头中取消设置 Javascript

    编辑 我的问题适用于 Drupal 6 和 7 尽管我的代码示例是 Drupal 6 人们提供的答案对于 Drupal 的两个版本都很有用 我目前正在 Drupal 中为 Drupal 6 网站创建移动主题 并尝试通过以下方式删除所有不必要
  • 如何以编程方式创建论坛主题?

    我刚刚通过以下链接了解了如何以编程方式创建论坛和容器 http www unibia com unibianet drupal how create drupal forums and containers programmatically
  • 在 Fish Shell 中设置导出

    我安装了多个版本的 PHP 对于我的正常开发 我总是使用通过自制程序安装的 PHP 5 5 x 在鱼壳里 which php php version gt usr local bin php gt PHP 5 5 8 cli built J
  • 在 Drupal 中选择性地删除页面的样式表

    我正在尝试为首页制作不同的布局 在此过程中 我声明了名为 front page css 和 page front tpl php 的新样式表 我正在使用加载responsive sidebar css 的 Zen 子主题 我想删除 resp
  • Drupal 8 图像与图像样式

    在drupal 7中 我使用函数image style url style uri 生成具有样式的新图像并返回图像的路径 那么在 drupal 8 中会用什么来代替它呢 谢谢 Per the 变更记录 https www drupal or

随机推荐

  • Windows Azure 上的 Jenkins 从属连接问题

    我已在 Windows Azure VM 上设置了 Jenkins 从属节点 在该节点上构建时 项目可以平稳运行大约 20 30 分钟 之后连接就会断开 当连接断开时 我一直在节点虚拟机上 并且似乎正在丢失 重置与 Jenkins Mast
  • 如何从 onclick div 属性检测 Javascript 中的 control+click? [复制]

    这个问题在这里已经有答案了 我需要知道用户是否正在单击或控制单击 div 元素 我已经看到了如何使用事件侦听器执行此操作的示例 但我的代码已经设置到位 并且正在使用元素上onclick方法 HTML div blah div JS func
  • Angularjs 使用下拉菜单过滤数据

    我对 angularjs 和 javascript 有点陌生 所以请友善 我有两个下拉项 Ionic Select 它们都保存来自服务的数据 问题是我需要过滤它们才能一起工作 例如 如果我在第一个下拉列表中选择一家公司 则只有该公司内部的代
  • @TestPropertySource 未加载属性

    我正在为 Spring Boot 应用程序编写集成测试 但是当我尝试使用 TestPropertySource 覆盖某些属性时 它会加载上下文 xml 中定义的属性文件 但不会覆盖注释中定义的属性 RunWith SpringJUnit4C
  • 用汇编程序编写 x86_64 Linux 内核模块

    我尝试在 nasm 中编写简单的内核模块 v3 6 但 insmod 告诉我 sudo insmod hello ko insmod ERROR could not insert module hello ko Invalid module
  • 键盘弹起时调整滚动视图

    我有一个带有表单的活动 因为表单很长 所以我使用了滚动视图 问题是键盘弹起时滚动视图不会改变 键盘与滚动视图的最后部分重叠 如何确保键盘位于滚动视图下方 并且调整滚动视图以适应其上方的空间 同时 有没有办法确保 上一个 和 下一个 按钮也在
  • 在 git post-commit 挂钩中,如何获取已更改的文件列表?

    尝试计算 Git 提交后挂钩中的提交花费了多长时间 我有一个提交后 git 挂钩 它通过 API 提交有关提交的信息 我想做的是弄清楚提交花费了多长时间 大致 我的假设是 可以通过找到所涉及文件的所有创建时间和修改时间的最小值并将其与最大创
  • 为什么我得到;使用“const char *”类型的表达式初始化“char *”会丢弃限定符吗?

    我不明白为什么我会收到此警告clang我自己 function prototype const modifier c 13 8 warning initializing char with an expression of type con
  • Django:在模板中列出模型字段名称和值[重复]

    这个问题在这里已经有答案了 可能的重复 Django 迭代模板中的模型实例字段名称和值 Hi 我试图在模板中列出通用 Django 模型的字段和相应值 但是 我找不到针对相当常见问题的内置解决方案 我非常接近解决方案 但找不到出路 view
  • 在JS中从ids自动创建变量? [复制]

    这个问题在这里已经有答案了 就在今天 经过几年的 JavaScript 编程 我遇到了一些让我震惊的事情 浏览器为每个具有 id 的元素创建对象 对象的名称将与 id 匹配 所以如果你有 div div 你可以做 alert box obj
  • Obj-C 2.0 中合成原子 @properties 的锁定细节

    Obj C 2 0 中的属性文档说原子属性在内部使用锁 但没有记录锁的细节 有谁知道这是一个按属性锁 一个与 synchronized self 使用的隐式锁分开的按对象锁 还是 synchronized self 的等效项 查看生成的代码
  • 每个用户的 Firebase 文档?

    我想知道如何在每个用户创建帐户 使用 Firebase Web 时为他们制作一个文档 我启用了 Firebase 身份验证并正在运行 我希望每个用户都可以在 Cloud Firestore 中名为 users 的集合中拥有一个文档 我如何获
  • 日期错误异常

    我正在尝试使用 java 在 sql 中输入 1900 年的日期 但出现异常 com mysql jdbc MysqlDataTruncation Data truncation Incorrect datetime value 1900
  • 如何使用 C 找到应用程序包 (NSBundle) 中文件的路径?

    是否有 C API 用于查找应用程序包中文件的路径 我知道这可以在 Objective C 中使用以下语法来完成 NSString path NSBundle mainBundle pathForResource MyImage ofTyp
  • Android短屏亮度代码!

    谁知道为什么这段代码不会降低我的应用程序的背光 Context context this Settings System putInt context getContentResolver Settings System SCREEN BR
  • 将事件添加到 CalendarView

    我认为这个问题说明了一切 是否可以在 Android 默认情况下显示事件CalendarView 我知道它是为小部件而不是真正的日历应用程序制作的 但我的应用程序不应该是日历应用程序 这只是我的应用程序中的一个小功能 所以我认为视图非常适合
  • C++ 的 std::string 池、调试版本? std::string 和 valgrind 问题

    我遇到了许多关于 std string 中可能存在内存泄漏的 valgrind 警告的问题 如下所示 120 bytes in 4 blocks are possibly lost in loss record 4 192 of 4 687
  • 如何使用 iOS 版谷歌地图 sdk 获取位置的 CGPoint?

    如何使用 iOS 版谷歌地图 sdk 获取位置的 CGPoint 我需要在用户位置上添加 pinview 它基本上是相反的这个问题 例如 GMSMapView mapView CLLocationCoordinate2D coordinat
  • 通过 ADO.Net 和 COM 互操作性进行 MS Access 批量更新

    这是一种后续行动这个线程 这都是与 Net 2 0 至少对我来说 本质上 Marc 上面的 OP 尝试了几种不同的方法来更新包含 100 000 条记录的 MS Access 表 并发现使用 DAO 连接大约是快 10 30 倍与使用 AD
  • 对于从事 Drupal 项目的小型分布式团队来说,最佳实践是什么?

    经过一番研究 我们选择在下一个项目中与 Drupal 合作 我们是一个分布式团队 由于 Drupal 将所有内容存储在数据库中 基于我们到目前为止所看到的 作为一个分布式团队 我们如何才能在这个项目上协同工作 我们应该采取哪些最佳实践 我们