首页 / 帖子
请问Drupal7下Features的经常Override的问题

请问我在本地创建了一个feature,紧接着就在本地相同环境启用了,再去view时发现是覆盖状态!不太明白为什么。

然后我就revert,却怎么也revert不到default状态...

请问这一般是什么原因导致的呢?

5个答案
Amanda Song
发布于:2014-07-22 22:24

views有两种添加方式:

一种是通过views的hook_views_default_views 用代码方式添加,一些模块会通过这种方式来实现自己的默认views,保存于文件中;

一种则是用户通过ui界面添加的,也是我们最常用的方式,这种方式添加的views是保存于数据库里的。


你创建views后再用生成feature,等于把views从数据库导出到代码文件里,启用该feature后views检测到数据库和代码里同时存在相同的view,就会提示你“覆盖”了。


至于为何无法revert到default状态,这个没遇过……可以尝试清空缓存再revert看看

王斌
发布于:2014-07-22 22:27

这种情况很难猜的,一般你重新recreate出来一份feature可能就会出现差异,而差异就是所谓的原因了,一般用版本管理软件的diff功能,diff模块给的对比结果是简化的,还是不够分析的。有时候分析也分析不出什么来,但要保证本地features变为default再commit代码。

闻涛
发布于:2014-07-23 09:21

最终我尝试了下更新views模块版本,可以了... 原来的views版本太老了,而features模块是最新的,有可能是新版本features对新版本的views完美支持,老版本会有些问题吧

陈蹊
发布于:2014-07-23 10:45

这个问题确实比较诡异,我也遇到过。

有时候甚至都要去看代码,或者variable表里面什么设置不对。

还是按照@于志成说的,通过diff功能查看一下,或者回滚几个版本看看。

@流云说的views版本的问题也是一个,也默记一下,下次遇到了就知道了。

赵高欣
发布于:2014-07-29 09:32

features放进版本库里的时候,有时候会有脏数据,会有这种问题,需要删除原有features包,然后重新提交新的;


features里的变量,如果被其他模块强行改了,比如string override, 也会出现不同;


事实上,overridden的状态也是挺常见的,需要做的就是多看看diff,看不同之处是否影响了你的功能,如果没有问题,你就可以放心的基于现有features,来做配置更新重建等等。