168 lines
7.4 KiB
Plaintext
168 lines
7.4 KiB
Plaintext
Features Override (Drupal 7-2.x)
|
|
--------------------------------
|
|
|
|
This module add a new Features exportable called "Feature Overrides" that
|
|
are used to export overridden changes to other Features. It requires at
|
|
least the 7.x-1.0-rc1 release of Features.
|
|
|
|
To use, install this module and enable it. When you create a new feature from
|
|
the Structure/Features page, two new exportables called "Feature Overrides"
|
|
will be displayed in the drop-down list. The first one allows you to override
|
|
all of the changes of a specific component. The second "Individual Advanced"
|
|
allows you to select exactly which line-by-line changes are exported.
|
|
Select the Overrode exportable and then select which components you wish to
|
|
export overrides for. Only components that are currently overridden will be
|
|
shown as checkboxes.
|
|
|
|
Maintainers
|
|
-----------
|
|
- mpotter (Mike Potter)
|
|
|
|
|
|
Basic Usage
|
|
-----------
|
|
1) Create normal features and enable them.
|
|
|
|
2) Make changes to the site using the normal Drupal UI.
|
|
|
|
3) Go to the admin/structure/features page and you should see some of your
|
|
Features marked as "Overridden"
|
|
|
|
4) Click the "Create Feature" tab.
|
|
|
|
5) Enter a name for your Override feature.
|
|
|
|
6) Click the "Edit components" drop-down and select "Feature Overrides".
|
|
A list of overridden components will be shown. For example, if you changed a
|
|
field in a content type, that field name will be shown in the list of
|
|
overrides. If you changed something in a view, that view name will be in the
|
|
list. Check the boxes next to the overrides you wish to save.
|
|
|
|
7) Click the "Download Feature" button at the bottom of the screen. This will
|
|
create your Override Feature module code and save it to a local file. Upload
|
|
that file to your server and place it into your normal sites/all/modules
|
|
directory.
|
|
|
|
8) Go to the Modules page and Enable your new override module.
|
|
|
|
9) Clear the Drupal cache.
|
|
|
|
10) Now when you visit the admin/structure/features you should see your new
|
|
override feature and the original features should no longer be marked as
|
|
"Overridden".
|
|
|
|
|
|
Merging new changes into an existing Override
|
|
---------------------------------------------
|
|
Once you have created an Override feature, it's easy to add additional changes
|
|
to it:
|
|
|
|
1) Make changes to the site via the Drupal UI
|
|
|
|
2) Visit admin/structure/features and you should see both the original code
|
|
feature marked as "Overridden" as well as the Override feature marked as
|
|
"Overridden"
|
|
|
|
3) Click the Recreate link for the Override feature.
|
|
|
|
4) Select any new overrides from the Component dropdown list as needed.
|
|
Download your new feature.
|
|
|
|
You can accomplish this same task using Drush:
|
|
|
|
drush features-update override-feature
|
|
|
|
5) Now visit the Features admin page and nothing should be marked as Overridden
|
|
again.
|
|
|
|
NOTE: You want to update/recreate the Override feature and NOT the original
|
|
feature. If you recreate the original feature, then ALL of the overrides (the
|
|
existing ones in the Override module and the new changes) will be written to
|
|
the original feature. Probably not what you wanted (see next section)
|
|
|
|
Rebuilding the Original Feature without the Overrides
|
|
-----------------------------------------------------
|
|
Sometimes you want to make a change and have that change saved with the
|
|
original feature and not with the Override. Here are the steps to accomplish
|
|
this:
|
|
|
|
1) Make the changes you need to the site via the Drupal UI
|
|
|
|
2) Visit admin/structure/features and you should see both the original code
|
|
feature marked as "Overridden" as well as the Override feature marked as
|
|
"Overridden"
|
|
|
|
3) Click the "Create Feature" tab to create a new feature
|
|
|
|
4) Create a new Override feature by entering a name and description, then
|
|
select the overrides you want to save from the Feature Override section of the
|
|
Components drop-down menu
|
|
|
|
5) Click Download Feature and install this new module on your site. Let's
|
|
call it "New Changes". So now we have the "Original Feature", the first
|
|
"Override Feature", and the new "New Changes" feature. All three should
|
|
display in the Features Admin page in their Default state.
|
|
|
|
6) From the Features Admin page, uncheck the "New Changes" feature you created
|
|
in step 5, then click Save. This will undo the recent changes.
|
|
|
|
7) From the Features Admin page, uncheck the box next to the "Override Feature"
|
|
that you originally created (NOT the New one you made in step 5) and click
|
|
Save. This will undo the changes made by the first Override module.
|
|
|
|
8) If the original feature shows as "Overridden" or "Needs Review", click on
|
|
it and click the Revert button to ensure it is in it's original state.
|
|
|
|
9) From the Features Admin page, check the box next to the "New Changes"
|
|
feature you created in step 5 to enable is and click Save. Now the database
|
|
reflects the original feature plus the new changes.
|
|
|
|
10) Click the Recreate link for the original Feature. Click the Download link
|
|
and install the updated feature. Or use the drush command:
|
|
"drush features-update original-feature". This will export the original
|
|
feature code along with the New Changes code.
|
|
|
|
11) You no longer need the New Changes feature. You can disable it and remove
|
|
it from your site if you wish. If you don't remove it completely, at least
|
|
ensure that it is disabled in the Feature Admin page.
|
|
|
|
12) Finally, check the box next to the Override feature to re-enable that
|
|
feature. Now you have the original code plus the New changes stored in the
|
|
original feature, but you still have the additional Overrides in the seperate
|
|
Override module.
|
|
|
|
Once you understand the above steps you will also realize that there are other
|
|
ways to accomplish this same task. For example, you could have disabled the
|
|
Override module first, then made your changes and just recreated the original
|
|
feature directly. However, the above procedure is the most complete and
|
|
reflects the real-life situation where the changes have already been made to
|
|
the site and you need to somehow capture those changes back into the original
|
|
feature.
|
|
|
|
Adding or Removing specific Override lines
|
|
------------------------------------------
|
|
An Override feature is simply a list of code changes that need to be made to
|
|
the current configuration. Only code *differences* are stored in the Override
|
|
feature.
|
|
|
|
To view these specific line-by-line code differences, click the Default link
|
|
next to your Override module from the Features admin page, then click the
|
|
Review Overrides tab. This will show the Overrides currently exported as
|
|
individual lines (along with the normal "diff" listing below).
|
|
|
|
To change which specific lines are exported, click the Recreate tab, then
|
|
open the Components dropdown. Select the "Features Overrides Individual"
|
|
(advanced) tab. Then click the "Refine" link next to the component you want
|
|
to adjust. Each specific override line will be shown as a checkbox. Simply
|
|
check or uncheck the lines desired. Then click the Download button to create
|
|
a new version of your Override feature.
|
|
|
|
In the main Features Admin page there is also a new Review Overrides tab.
|
|
This will show a list of any new overrides no matter which module that relate
|
|
to. This is a very useful debugging tool for determining where changes have
|
|
been made to your site. The Overrides tab will tell you the exact Component
|
|
being overridden. The normal "Review Overrides" tab in Features only shows the
|
|
raw code "diffs" and sometimes cannot show the full context of the change. The
|
|
new Review Overrides tab can show you exactly what the change is and where it
|
|
is made (which View changed, which field changed, etc).
|