Upgrading ViewVC

Introduction

This document describes some of the things that you will need to consider, change, or handle when upgrading an existing ViewVC or ViewCVS installation to a newer version.

Upgrading from an ancient version to the latest version isn't necessarily a multi step process. The instructions are only organized that way. You can certainly upgrade in a single step.

It is always recommended to install the new version in a fresh directory and to carefully compare the configuration files. A possible approach is to name the directories /usr/local/viewvc-1.0, /usr/local/viewvc-1.1 and so on and than create a symbolic link viewvc pointing to the production version. This way you can easily test several versions and switch back if your users start to complain.

Table of Contents

Upgrading From ViewVC 1.0

This section discusses how to upgrade ViewVC 1.0.x to ViewVC 1.1.x.

root_as_url_component Now Enabled by Default

In ViewVC 1.1, the root_as_url_component configuration option is now enabled by default. This option causes ViewVC URLs to be of the form …/root-name/path-in-root[?…] instead of …/path-in-root/?root=root-name[&…], and makes for a much more intuitive user experience, navigation-wise, when ViewVC is serving up multiple version control repositories. When in this mode, ViewVC will automatically perform the obvious redirection for URLs which have a root= CGI parameter.

Unfortunately, there's a catch. Older URLs for the default root (specified by the default_root configuration option) were optimized to not include the root= CGI parameter. This means they look unfortunately similar to the newer root-in-the-path URL format, and ViewVC will not attempt to redirect them. But ViewVC won't be able to handle them, either. So, old-style default-root URLs, when aimed at a ViewVC for which the root_as_url_component option has been subsequently enabled, will result in an error. If you need to preserve the functionality of those old URLs, you'll need to either disable root_as_url_component, or use some other mechanism (like server URL rewriting) to morph them into compliance with the new URL format.

Path-Based Authorization / Forbidden Modules

ViewVC 1.1 introduces a new pluggable authorization (authz) subsystem which gives administrators greater control over the accessibility of the information ViewVC displays in its output. ViewVC provides a number of working authz modules and a framework for configuring them. But of specific interest to folks upgrading from ViewVC 1.0 is that one of these new modules has replaced the handling of forbidden modules. As such, the forbidden configuration option now lives under the configuration section specific to that authz module.

Migrating your existing configuration of forbidden modules should be fairly straightforward:

  1. In the new "authz-forbidden" section of viewvc.conf, set the forbidden option to the same value as the forbidden option in your ViewVC 1.0.x configuration's "general" section.
  2. In the new "authz-forbiddenre" section of viewvc.conf, set the forbiddenre option to the same value as the forbiddenre option in your ViewVC 1.0.x configuration's "general" section.
  3. Finally, ensure that that the new authorizer option is set to either "forbidden" or "forbiddenre", depending on which of those you were using in ViewVC 1.0.x.

Of course, you might wish to take advantage of another of the provided authz modules. Or, you might wish to write a brand new one for your purposes. The flexibility is yours.

Known Issues:

Syntax Highlighting

ViewVC 1.0.x supports syntax highlighting provided by multiple third-party highlighting engines, including GNU enscript, GNU source-highlight, highlight, php, and py2html. Unfortunately, each of those integrations worked differently than the others. Some supported line numbers, some didn't; some were under active development and recognized newer languages; some weren't; each had its own set of CSS stylations that needed to be customized; etc.

In ViewVC 1.1, we've dropped support for all of those integations in favor of a single integration with Pygments, a Python-module-based syntax highlighting engine. As such, the configuration options for the various other engines (both those that enabled the integration and those that specified the locations of the third-party tools) have been removed from ViewVC, and have been replaced by a single new configuration option: enable_syntax_coloration.

The list of removed options is as follows:

Checkin Database

ViewVC 1.1 introduces to the cvsdbadmin and svndbadmin tools a new "purge" operation, which allows you to remove all the information related to a given root from your checkins database (without disturbing the information associated with other roots). Likewise, the "rebuild" command in those tools now implies a "purge" followed by an update.

As a related change, the svndbadmin program's "rebuild" subcommand has had its purpose become more defined. It no longer accepts a revision argument, and therefore can now only be used to completely rebuild the entirety of the checkin database information for a Subversion repository (instead of being able to only update the information related to single Subversion revision). For per-revision updating, use svndbadmin update and provide a revision (or revision range). And to get the previous rebuild-a-revision effect, pass the new --force option to svndbadmin update.

In other words, where you once did this:

$ svndbadmin rebuild /path/to/repository 1234

you now need to do this:

$ svndbadmin update /path/to/repository 1234 --force

To enhance the performance of the new "purge" operation, ViewVC 1.1 introduces some slight changes to the checkin database schema. If you use the make-database tool to (re)create your checkins database, it will by default employ the new database schema. This should cause the database to be virtually unusable by previous versions of ViewVC, and that's by design. If, however, you need to (re)create your checkins database and you require compatibility with previous versions of ViewVC or ViewCVS, simply pass the "--version=1.0" option to the make-database script. Note that your "purge" and "rebuild" operations could be abysmally slow, though, as that version of the database schema is not optimized for those operations.

Configuration Options

This section covers changes to configuration options not already discussed in other sections pertaining to this upgrade.

In ViewVC 1.1, a new "utilities" section was added to the viewvc.conf file. All the options used for configuring the locations of various helper applications that ViewVC uses which were previously scattered throughout the configuration file are now all centralized in this one new section. To accomplish this, the following options were added:

…and these were removed:

All the options which governed which ViewVC views were enabled have been consolidated into a single new option. This new option:

…replaces these, which have been removed:

ViewVC now honors the "svn:mime-type" property stored on Subversion-versioned files as the primary source of MIME type determination (before falling back to name-based MIME mappings and such). However, this can negatively affect the viewability of certain files — especially images — whose "svn:mime-type" properties are set incorrectly, such as will happen if Subversion itself merely determines that the file isn't human-readable and uses the "application/octet-stream" MIME type to record this determination. To make ViewVC not honor the "svn:mime-type" property value, set the svn_ignore_mimetype configuration option.

Speaking of MIME types, the option mime_types_file is now mime_types_files, as it now carries multiple paths to MIME mappings files, ordered by preference.

The use_rcsparse option was moved from the "general" section to the "options" section.

The log_sort option's value "cvs" has been renamed to "none" (for general application across all supported version control systems).

Custom sections which define per-virtual-host configuration option overrides must now have their names prefixed with "vhost-". Also, instead of a hyphen (-) between the virtual host name and the base configuration section being overridden, now there should be a forward slash character (/). For example, the following configuration which was valid in ViewVC 1.0 is no longer valid:

[vhosts]
all = viewvc.*

[all-options]
allowed_views = annotate, diff, markup, tar

This now needs to be written like so:

[vhosts]
all = viewvc.*

[vhost-all/options]
allowed_views = annotate, diff, markup, tar

The following is a grab-bag of additional new options:

Templates

This section describes template variable changes introduced in this release. See the Template Authoring Guide for the current set of variables available to each templates.

One notable change in ViewVC 1.1 is that the markup.ezt and annotate.ezt templates have been combined into a single file.ezt template.

Also, the configuration options under the [templates] section are now paths relative to the configured template directory (either the value of the options/template_dir option, or the default "templates" directory), instead of being relative to the configuration location.

Variable Location Changes
rootpath all templates added
change_root_action all templates removed
change_root_hidden_values all templates removed
roots all templates except roots.ezt removed
roots.path roots.ezt added
queryform_href diff.ezt, file.ezt, graph.ezt, log.ezt, log_table.ezt, query_form.ezt, revision.ezt, roots.ezt added
tarball_href diff.ezt, file.ezt, graph.ezt, log.ezt, log_table.ezt, query_form.ezt, query_results.ezt, revision.ezt, roots.ezt added
properties directory.ezt, file.ezt added
properties.name directory.ezt, file.ezt added
properties.undisplayable directory.ezt, file.ezt added
properties.value directory.ezt, file.ezt added
diff_format_hidden_values diff.ezt now is an iterable list of objects with .name and .value attributes
diff_type diff.ezt new value: f
date_left diff.ezt renamed to left.date
path_left diff.ezt renamed to left.path
rev_left diff.ezt renamed to left.rev
tag_left diff.ezt renamed to left.tag
date_right diff.ezt renamed to right.date
path_right diff.ezt renamed to right.path
rev_right diff.ezt renamed to right.rev
tag_right diff.ezt renamed to right.tag
annotate_href diff.ezt removed, use right.annotate_href instead
left.annotate_href diff.ezt added
left.download_href diff.ezt added
left.download_text_href diff.ezt added
left.prefer_markup diff.ezt added
left.revision_href diff.ezt added
left.view_href diff.ezt added
right.annotate_href diff.ezt added
right.download_href diff.ezt added
right.download_text_href diff.ezt added
right.prefer_markup diff.ezt added
right.revision_href diff.ezt added
right.view_href diff.ezt added
right.view_href diff.ezt added
dir_paging_hidden_values directory.ezt, , dir_alternate.ezt now is an iterable list of objects with .name and .value attributes
entries.log directory.ezt, dir_alternate.ezt now always contains untruncated log message
entries.short_log directory.ezt, dir_alternate.ezt added
search_re_hidden_values directory.ezt, dir_alternate.ezt now is an iterable list of objects with .name and .value attributes
search_tag_hidden_values directory.ezt, dir_alternate.ezt now is an iterable list of objects with .name and .value attributes
pathrev_clear_hidden_values log.ezt, log_table.ezt, directory.ezt, dir_alternate.ezt now is an iterable list of objects with .name and .value attributes
pathrev_hidden_values log.ezt, log_table.ezt, directory.ezt, dir_alternate.ezt now is an iterable list of objects with .name and .value attributes
annotate_href log.ezt, log_table.ezt renamed to head_annotate_href
diff_form_hidden_values log.ezt, log_table.ezt now is an iterable list of objects with .name and .value attributes
download_href log.ezt, log_table.ezt renamed to head_download_href
download_text_href log.ezt, log_table.ezt renamed to head_download_text_href
log_paging_hidden_values log.ezt, log_table.ezt now is an iterable list of objects with .name and .value attributes
logsort_hidden_values log.ezt, log_table.ezt now is an iterable list of objects with .name and .value attributes
prefer_markup log.ezt, log_table.ezt renamed to head_prefer_markup
view_href log.ezt, log_table.ezt renamed to head_view_href
rss_link_href query.ezt, rss.ezt added
query_hidden_values query_form.ezt now is an iterable list of objects with .name and .value attributes
jump_rev_hidden_values revision.ezt now is an iterable list of objects with .name and .value attributes
num_changes revision.ezt added

Upgrading From ViewCVS 0.9

This section discusses how to upgrade ViewCVS 0.9 to ViewVC 1.0.

CGI Stubs

The CGI stub scripts haved been moved from <VIEWVC_INSTALLATION_DIRECTORY>/cgi/ to <VIEWVC_INSTALLATION_DIRECTORY>/bin/cgi/, so you will need update any ScriptAlias directives pointing to them in your apache configuration. Also, the contents of these scripts have changed, so you may need to replace copies of the old scripts you put in other directories.

Checkin Database

ViewVC 1.0 reads and writes commit times in the MySQL database in UTC time rather than local time. This can cause times displayed on the query page to be a few hours off if an old database is being used with a new version of ViewVC. The best way to fix this is to rebuild the database with the new version of cvsdbadmin, but it is also possible to enable a backwards compatibility mode by setting utc_time = 0 at the top of lib/dbi.py

"checkout_magic" Option

In ViewVC 1.0, the checkout_magic option has been disabled by default to provide a simpler URL scheme that works safely with URL authorization. Most users will not notice any difference in behavior, but users who had been using ViewCVS to browse the contents of static HTML pages stored in a repository may notice that links and images in those pages targetted at other files in the repository no longer display correctly. The new default_file_view option can be used to solve this problem and, if neccessary, checkout_magic can also be re-enabled. The viewcvs.conf file describes these options in detail.

Configuration Options

The following options have been added:

The following options have been removed:

Templates

The templates have changed drastically in this version of ViewVC. If you are using customized templates from 0.9 or earlier, you will want to port your old customizations to the new template files instead of trying to get the old template files to work with the new ViewVC.

There is a new Template Authoring Guide for ViewVC 1.0 templates that can help you with your customizations. And the chart below lists all 0.9 template variables and shows what's become of them in 1.0.

Variable Location Changes
ago markup.ezt unchanged
author markup.ezt unchanged
back_url log.ezt, log_table.ezt replaced by up_href, which doesn't include the current #file anchor
branch log.ezt, log_table.ezt replaced by default_branch, which is a list instead of a string
branch query.ezt unchanged
branch_names log.ezt, log_table.ezt renamed to branch_tags
branch_points markup.ezt unchanged
branch_tags dir_alternate.ezt, directory.ezt unchanged
branches markup.ezt unchanged
cfg.general.address footer.ezt unchanged
cfg.general.main_title dir_alternate.ezt, directory.ezt, query.ezt removed, used to be a string from the configuration file that was shown in the title of the root directory page.
cfg.options.use_cvsgraph dir_alternate.ezt, directory.ezt unchanged
cfg.options.use_re_search dir_alternate.ezt, directory.ezt unchanged
changed markup.ezt unchanged
changes diff.ezt attributes changed, see below
changes.extra diff.ezt renamed to changes.line_info_extra
changes.have_left diff.ezt unchanged
changes.have_right diff.ezt unchanged
changes.left diff.ezt unchanged
changes.line1 diff.ezt renamed to changes.line_info_left
changes.line2 diff.ezt renamed to changes.line_info_right
changes.right diff.ezt unchanged
changes.type diff.ezt new values binary_diff and error
commits query.ezt unchanged
commits.desc query.ezt unchanged
commits.files query.ezt unchanged
commits.files.author query.ezt unchanged
commits.files.branch query.ezt unchanged
commits.files.date query.ezt unchanged
commits.files.link query.ezt unchanged
commits.files.minus query.ezt unchanged
commits.files.plus query.ezt unchanged
commits.files.rev query.ezt unchanged
current_root dir_alternate.ezt, directory.ezt renamed to rootname
date query.ezt unchanged
date1 diff.ezt renamed to date_left
date2 diff.ezt renamed to date_right
diff_format diff.ezt, log.ezt, log_table.ezt unchanged
directory query.ezt unchanged
entries log.ezt, log_table.ezt attributes changed, see below
entries.ago log.ezt, log_table.ezt unchanged
entries.author log.ezt, log_table.ezt unchanged
entries.branch_names log.ezt unchanged
entries.branch_point log.ezt, log_table.ezt unchanged
entries.branch_points log.ezt, log_table.ezt unchanged
entries.branch_points.href log.ezt, log_table.ezt unchanged
entries.branch_points.name log.ezt, log_table.ezt unchanged
entries.branches log.ezt, log_table.ezt unchanged
entries.branches.href log.ezt, log_table.ezt unchanged
entries.branches.name log.ezt, log_table.ezt unchanged
entries.changed log.ezt unchanged
entries.href log.ezt, log_table.ezt renamed to entries.download_href
entries.html_log log.ezt, log_table.ezt renamed to entries.log
entries.next_main log.ezt, log_table.ezt unchanged
entries.prev log.ezt, log_table.ezt unchanged
entries.rev log.ezt, log_table.ezt unchanged
entries.state log.ezt, log_table.ezt unchanged
entries.tag_names log.ezt unchanged
entries.tags log.ezt, log_table.ezt unchanged
entries.tags.href log.ezt unchanged
entries.tags.name log.ezt, log_table.ezt unchanged
entries.text_href log.ezt, log_table.ezt renamed to entries.download_text_href
entries.to_selected log.ezt, log_table.ezt combined into diff_to_sel_href variable
entries.utc_date log.ezt, log_table.ezt renamed to entries.date
entries.vendor_branch log.ezt, log_table.ezt unchanged
entries.view_href log.ezt, log_table.ezt unchanged
file query.ezt unchanged
file_url header.ezt renamed to log_href
filename header.ezt removed, used to be set to the name of the file being shown
files_shown dir_alternate.ezt, directory.ezt unchanged
graph_href log.ezt, log_table.ezt unchanged
has_tags dir_alternate.ezt, directory.ezt removed, used to be a boolean that was true when either tag information was available from the current directory or a tag was set. Determined whether or not to show a tag selector box on the bottom of the directory page.
have_logs dir_alternate.ezt, directory.ezt removed, used to be a boolean that was true whenever any logs were being shown in a directory listing. When it was false the template code would omit the log column from the directory table.
head_abs_href log.ezt, log_table.ezt renamed to download_href
head_href log.ezt, log_table.ezt replaced by view_href and download_href
hidden_values diff.ezt, log.ezt, log_table.ezt combined into *_hidden_values variables
hide_attic_href dir_alternate.ezt, directory.ezt unchanged
hours query.ezt unchanged
href log.ezt, log_table.ezt combined into *_href variables
href markup.ezt renamed to download_href
human_readable log.ezt, log_table.ezt unchanged
imagemap graph.ezt unchanged
log markup.ezt unchanged
logsort log.ezt, log_table.ezt unchanged
mime_type log.ezt, log_table.ezt, markup.ezt unchanged
nav_file markup.ezt replaced with nav_path
nav_path dir_alternate.ezt, directory.ezt, header.ezt, log.ezt, log_table.ezt changed from a block of HTML to a list of path components
no_match dir_alternate.ezt, directory.ezt removed, used to be a boolean that was true when a directory contained files, but none of them could be displayed due to regular expression or view tag filtering. Would trigger an error message.
num_commits query.ezt unchanged
num_files dir_alternate.ezt, directory.ezt removed, used to be a count of files in a directory, including dead and filtered files. This number was only shown in the no_match error message.
params dir_alternate.ezt, directory.ezt replaced by search_re_hidden_values
path header.ezt removed, used to be set to the directory path of the file being shown
plain_tags dir_alternate.ezt, directory.ezt unchanged
prev markup.ezt unchanged
qquery header.ezt combined into log_href variable
qquery log.ezt, log_table.ezt replaced by diff_select_hidden_values
query log.ezt, log_table.ezt combined into *_href variables
query query.ezt unchanged
repository query.ezt unchanged
request.amp_query graph.ezt combined into imagesrc variable
request.script_name dir_alternate.ezt, directory.ezt, log.ezt, log_table.ezt combined into *_href variables
request.url diff.ezt combined into diff_format_action variable
request.url graph.ezt combined into imagesrc variable
request.where graph.ezt renamed to just where
rev graph.ezt removed, used to be set to the value of the "graph" parameter in CvsGraph page urls. The value was passed on through the rev parameter to CvsGraph image URLs, where, oddly enough, it was ignored. It'd be set to a file revision number in directory page graph links, and just "1" in log page graph links.
rev graph.ezt, header.ezt, markup.ezt unchanged
rev1 diff.ezt renamed to rev_left
rev2 diff.ezt renamed to rev_right
rev_selected log.ezt, log_table.ezt unchanged
roots dir_alternate.ezt, directory.ezt changed to a list of objects instead of a list of strings
rows dir_alternate.ezt, directory.ezt replaced by entries
rows.anchor dir_alternate.ezt, directory.ezt renamed to entries.anchor
rows.author dir_alternate.ezt, directory.ezt renamed to entries.author
rows.cvs dir_alternate.ezt, directory.ezt replaced by entries.errors
rows.graph_href dir_alternate.ezt, directory.ezt renamed to entries.graph_href
rows.href dir_alternate.ezt, directory.ezt renamed to entries.log_href
rows.log dir_alternate.ezt, directory.ezt renamed to entries.short_log
rows.log_file dir_alternate.ezt, directory.ezt renamed to entries.log_file
rows.log_rev dir_alternate.ezt, directory.ezt renamed to entries.log_rev
rows.name dir_alternate.ezt, directory.ezt renamed to entries.name
rows.rev dir_alternate.ezt, directory.ezt renamed to entries.rev
rows.rev_href dir_alternate.ezt, directory.ezt replaced by entries.view_href and entries.download_href
rows.show_log dir_alternate.ezt, directory.ezt removed, used to be a boolean that was true whenever a log message was present for the directory entry.
rows.state dir_alternate.ezt, directory.ezt renamed to entries.state
rows.time dir_alternate.ezt, directory.ezt renamed to entries.ago
rows.type dir_alternate.ezt, directory.ezt renamed to entries.pathtype
search_re dir_alternate.ezt, directory.ezt unchanged
selection_form dir_alternate.ezt, directory.ezt renamed to search_re_form
show_attic_href dir_alternate.ezt, directory.ezt unchanged
sortby dir_alternate.ezt, directory.ezt, query.ezt unchanged
sortby_author_href dir_alternate.ezt, directory.ezt unchanged
sortby_date_href dir_alternate.ezt, directory.ezt unchanged
sortby_file_href dir_alternate.ezt, directory.ezt unchanged
sortby_log_href dir_alternate.ezt, directory.ezt unchanged
sortby_rev_href dir_alternate.ezt, directory.ezt unchanged
state markup.ezt unchanged
tag markup.ezt renamed to pathrev
tag1 diff.ezt renamed to tag_left
tag2 diff.ezt renamed to tag_right
tags log.ezt, log_table.ezt unchanged
tags markup.ezt unchanged
tags.name log.ezt, log_table.ezt unchanged
tags.rev log.ezt, log_table.ezt unchanged
tags markup.ezt unchanged
tarball_href dir_alternate.ezt, directory.ezt unchanged
text_href markup.ezt renamed to download_text_href
tr1 log.ezt, log_table.ezt removed, used to be a default value for the first text field in the diff selector form. In 1.0, the default value is computed in the templates.
tr2 log.ezt, log_table.ezt removed, used to be a default value for the second text field in the diff selector form. In 1.0, the default value is computed in the templates.
unreadable dir_alternate.ezt, directory.ezt removed, used to be a boolean that was true whenever any of the files in the directory listing were 'unreadable.' It would trigger a generic error message at the bottom of the page.
utc_date markup.ezt renamed to date
vendor_branch markup.ezt unchanged
view_tag dir_alternate.ezt, directory.ezt, log.ezt, log_table.ezt renamed to pathrev
viewable log.ezt, log_table.ezt renamed to prefer_markup
vsn footer.ezt unchanged
where diff.ezt, dir_alternate.ezt, directory.ezt, log.ezt, log_table.ezt unchanged
who query.ezt unchanged

Template Arrangement

The default templates have been rearranged a bit in ViewVC 1.0. Specifically, "header.ezt" and "footer.ezt" have moved into the "templates/include/" subdirectory. Also, "directory.ezt" and "dir_alternate.ezt" now reference new template files "dir_header.ezt" and "dir_footer.ezt", also found in the "templates/include/" subdirectory.

Notably, the "markup.ezt" and "annotate.ezt" templates are now fully self-contained. That is, the markup and annotation data generated by ViewVC is now accessible in those templates just like other template variables. As a result, ViewVC now has no more internal need for the templates.footer configuration variable, so that variable has been removed from the default configuration file.

Upgrading From ViewCVS 0.8

This section discusses how to upgrade ViewCVS 0.8 to version 0.9 or a later version of the software.

NOTE: these changes will bring you up to the requirements of version 0.9. You must also follow the directions for upgrading from 0.9.

Configuration Options

More templates were introduced in version 0.8 of the software, which made many of the configuration options obsolete. This section covers which options were removed. If you made any changes to these options, then you will need to make corresponding changes in the templates.

Colors: diff_heading, diff_empty, diff_remove, diff_change, diff_add, and diff_dark_change
These options have been incorporated into the diff.ezt template.

markup_log
This option has been incorporated into the markup.ezt template.

Colors: nav_header and alt_background
These options have been incorporated into the header.ezt template.

Images: back_icon, dir_icon, and file_icon
These options have been incorporated into the directory.ezt, header.ezt, log.ezt, log_table.ezt, and query.ezt templates.

use_java_script and open_extern_window
The templates now use JavaScript in all applicable places, and open external windows for most downloading and viewing of files. If you wish to not use JavaScript and/or external windows, then remove the feature(s) from the templates.

show_author
Changing this option would be quite strange and rare. If you do not want to show the author for the revisions, then you should remove it from the various templates.

hide_non_readable
This option was never used, so it has been removed.

flip_links_in_dirview
This option is no longer available. If you want the links in your directory view flipped, then you may use the dir_alternate.ezt template.

Template Variables

Some template variables that were available in 0.8 have been removed in 0.9. If you have custom templates that refer to these variables, then you will need to modify your templates.

directory.ezt: headers
The headers are now listed explicitly in the template, rather than made available through a list.

directory.ezt: rows.cols, and rows.span
These variables were used in conjunction with the headers variable to control the column displays. This is now controlled explicitly within the templates.

directory.ezt: rev_in_front
This was used to indicate that revision links should be used in the first column, rather than in their standard place in the second column. Changing the links should now be done in the template, rather than according to this variable. You may want to look at the dir_alternate.ezt template, which has the revision in front.

directory.ezt: rows.attic and rows.hide_attic_href
These variable were used to manage the hide and showing of the contents of the Attic/ subdirectory. Several new variables were introduced which can be used to replace this functionality: show_attic_href, hide_attic_href, and rows.state.