Back to top

如何解决你的所有问题

此文英文原文链接:http://www.lullabot.com/articles/how-solve-all-your-problems

作者:Karen Stevenson

使用Drupal问题队列是你的最大优势.

好吧,也许不是你所有的问题.......但是至少是你的Drupal问题.数千个有贡献的模块组成了Drupal的生态系统,每一个模块由1个或者许多志愿者来维护.有时这些模块会出现问题,你需要了解如何让你的问题得到解决,这需要了解如何从Drupal的问题队列中获得最大帮助.

在你的提交问题之前

在报告bug之前,总是先尝试使用最新版本的代码,看看是否能解决它(下面的章节将介绍如何分辨哪个是最新的版本).经常有人报告的问题在最新的版本中已经被修复了,其实他们可以开始使用能够工作的代码而不是无助的等待能回复他们的问题.

前往项目问题队列

每一个Drupal项目都有他们自己的问题队列.你可以通过键入项目URL来进入的页面,比如 http://drupal.org/project/cck 或者 http://drupal.org/project/views.一定要先阅读项目的页面,有时候这里会有已知问题的消息.

"最新的代码"是指"开发版本"

项目页面将有一个"发布"列表.

你通常应该使用官方发布(绿色背景的版本),但是如果你遇到错误,你将需要取尝试开发版本(红色背景的版本)去修复你的错误(或者去测试它是否能够修复你的错误).如果你没有看到开发版本在项目的页面,你可以点击'view all release'链接去查看这里是否有开发版本(在你需要版本后面带有'-dev'后缀的名称).测试开发版本并不意味着你需要把你的产品网站转化成-dev版本,你应该在本地或者开发环境中进行测试.

官方发布版本是某一时候代码的快照,一旦被发布,它们将不会被修改.所以当错误被修复,它们将在开发版本中被修复.这些修改不会被写入到官方发布版本.当你想去了解一个错误是否被修复,你需要最新的代码.当你需要最新的代码,它将在总是在开发版本中.
即使是开发版本也会过时.在Drupal.org项目页面上的开发版本的tarballss和zip文件没12个小时会被更新,所以它们只包括他们创建时确认的补丁.如果一个补丁在今天被确认,它很可能还不在项目的压缩文件中,甚至那个压缩文件是今天的日期.你在压缩包中获得特定补丁的唯一途径就是在等待在修复被确认后的第二天创建发布的第一个压缩包.只有一个地方总是能保证你可以立即得到最新的代码,那就是GIT库.

看看你的问题是否已经被解决

任何时候,你获取了最新版本的代码,你需要做以下几个步骤:
1.立即运行update.php.一定要仔细观察是否有信息让你重新运行或者是否有错误发生.
2.清除所有缓存.
3.如果问题与一个CCK field(Drupal6)或者一个Fields field(Drupal7)有关,进入任何有问题的field的'Manage Field'界面,仔细检查所有看起来都很合理的值,并且再一次保存,即使你没有修改任何东西.并且进入'Display Fields'界面,仔细检查所有的配置,并且重新确认那个界面.
4.如果你的问题和Views有关,确保你通过点击Views'Tools'标签中的'Clear cache'按钮来清除了Views中的缓存.编辑有问题的view,并且查看每个field,argument,filter,或者sort.仔细检查所有看上去合理的值并且重新保存field和view.
然后观察你的问题在最新的代码下是否还存在.

找到问题队列

如果你仍然还有问题,你需要看看这个问题是否已经被报告了.在项目页面的右边栏中,你可以看到一块内容如下图:

在搜索栏中键入内容,或者只点击下一'Search'按钮去转入到全部问题队列.然后将你正在使用版本的问题过滤出来.当你使用D7版本的时候,你不会想看到D6版本问题的代码.请注意,这里有可能有个已解决的问题正好就是你的问题,所以你需要查看所有的问题,包括已经关闭的问题(问题会在被修复后关闭).
搜索一下看看时候你的问题已经被报告过了.例如,如果你看到了一条错误信息,用几个错误信息中的关键字做一次高级搜索.
如果你不能发现一个相似的问题,新建一个问题报告,并且确定你已经执行了所以解决问题的步骤.请注意,现在你应该对-dev版本提交新的问题了,因为那是你现在正在使用的...对吗?

一个话题 一个问题

在有些地方,你可能会打开一个讨论然后把你所有知道的问题都提出来.
但是Drupal.org的问题队列不是那样工作的.我们报告的每一个问题都有它自己的讨论.这样的话,其他有同样问题的人可以轻松的发现它,并且看看他们学要做些什么,或者提供更多关于问题的信息.
对于维护者来说这真的非常重要.他们不需要看到很多没有关联的信息,他们只需要查看跟这个问题有特定关系的信息即可.并且当一个问题被修复了,他们可以关闭这个问题,然后转移到另外一个问题上去.

使标题更有描述性

问题的标题是非常重要的.维护者经常扫描标题去决定怎样去处理它.其他的用户扫描标题去看看这里是否已经报告了和他们一样的问题.
一个糟糕的标题可能会像"一切都坏了!!!".去了解这个问题的唯一途径就是去读整个问题.一个好的标题将提供关于这个问题关键部分非常有用的摘要信息,比如"多值nodereference fields在一些views中会出现问题",一个这样的标题可以让你一样就判断出这个问题和你的问题有没有关系.

不要说太少,也不要说太多

这也许听起来不大可能,但是请听我解释."太少"意味着就像"一切都坏了"这样简略的报告或者只是粘帖错误信息,而没有提供你在做什么的时候遇到的问题或者在哪里遇到的问题这些信息.
记住这里有几百甚至数千可能的组成部分在一个field或者view中.只说"我创建了一个view并且加入了一个field并且它损坏了"就是一个提供太少信息的例子.
"太多"意味这提供了网站所有东西的全部历史记录和所有你希望你网站达到的效果,这样你必须阅读好几章节去找到问题被描述的地方.
我们的目标是提供足够的信息,这样维护者可以从头开始(毕竟他们没有你的网站或者得到你的数据),然后他们可以看到你遇到的问题.一个有用的报告将看起来像:

  1. 创建一个新的使用文字域工具集的数字域,将它设置为一个必要的单值域.
  2. 新创建一个view,设置为无格式的域列表,将这个域加入view,并将它设置为默认格式.
  3. 当你显示view,你将看到错误'XXXX'.

不要转换版本

坚持你提交的问题版本与你使用的版本一致.如果你正在使用Drupal7,你看到一个相似问题像是Drupal6,不要只是说一句"我也是"并将你的问题的版本改变.2个版本的问题完全一样是不大可能的,改变版本会使维护者处理这个问题的时候变得困难的多.
在上面的例子中,如果你看到一个相似的问题只出现在其它版本中,你应该创建一个问题,将它标记为你正在使用的版本.你可以在它中间创建一个链接指向其他版本的问题.作者可以判断它们是否是完全一样的问题,如果是一样的问题,作者可以把它标记为一个副本,否则他们可以作为独立的问题可能(或者非常可能)有不同的含义和修复方案.

不要重新打开已经关闭的问题

如果你发现一个已经关闭的老问题和你的问题很相似,一般来说你不应该重新打开它.特别是这个问题非常老.有例外是,如果一个问题刚刚关闭,而且你确定在最新的代码中一些被认为已经修复的问题实际上还没有被修复.那样的话你可以重开这个问题,并说明你在最新的代码中已经进行过测试,发现问题依然存在.你必须描述你怎样确认错误依然存在.
需要注意的是不要在已经关闭的问题中提问.被标记为"修复""关闭""副本"的问题不再维护者的关注范围.他们通常不再看这些问题.在新的或者打开的问题中提问.

收获!

如果你遵照了上面的步骤,你或将:
1.发现你的问题已经被解决了.
2.发现一个存在的问题报告,你可以关注什么时候这个问题被修复.
3.新建一个问题报告,提供正确的信息去帮助项目维护者解决问题.
恭喜你!你已经准备好利用Drupal.org问题队列.
很显然,这里有比错误报告和补丁更多的处理问题的方法.通过有效的使用Drupal.org提供的工具,你将分享其他数千开发者和网站建设者的成果,并且他们也能从你的工作中得到帮助.

Files: 

Add new comment