print <<ABOUT_END;
This script patches one or several Ensembl databases from older
releases to the release specified by the user on the command line
using the --release=NN command line switch, or to the latest release
for which the script is able to find a patch if the --release=NN
switch is not used. To only patch databases from a particular
Ensembl release, the user may use the --from=NN command line
switch. In this case, the script will use the value from the
'schema_version' meta key or, failing that, from the database name,
to determine what databases should be or shouldn't be patched.
The script is able to patch databases that have Ensembl Core
schemas, Ensembl Compara schemas, Ensembl Regulation schemas,
Ensembl Variation schemas, Ensembl Production and Ontology schemas
provided that the appropriate Git repositories have been checked out
and are available to this script. The Git root directory where
all Ensembl Git repositories are located may be specified using the
--gitdir=/some/path command line switch if the script is unable to
determine it by itself.
The user has to specify either a particular database to patch (using
--database=XXX) or by giving a schema type (using --type=XXX). In
the case where a single database is provided, the script will try to
figure out what schema type the database has from the value of the
'schema_type' meta key or, failing that, from the database name.
If the user gives only a schema type, the script will look for
databases with that schema type, again using the value of the
'schema_type' meta key or, failing that, using the database names.
The --database=XXX command line switch may also be used to specify a
pattern to match database names with.
To further restrict the set of databases that will be patched,
the --species=XXX command line switch may be used. The value
will be used to match against the various values of the meta key
'species.alias' or, failing that, against the database name.
When the --fix command line switch is used, the script will also
make it possible to apply older patches that might have been
skipped. For example: A database at schema version 65, with patches
since release 40, will not only be patched to the appropriate
release (specified with --release=NN), but all patches since release
40 (inclusively) will be tested. If the patch identifier for an old
patch is missing from the meta table of the database, that patch
will be applied.
Examples
The release coordinator patches all Ensembl Core-like databases
from release 65 to release 66:
$0 -h host -u user -p password \\
-t core -f 65 -r 66
A genebuilder wishes to patch the same set as specified above but
without being prompted to apply patches
$0 -h host -u user -p password \\
-t core -f 65 -r 66 --nointeractive
A genebuilder patches one of her databases to release 66, and
wants to look at what the script proposes to do before actually
running it for real:
$0 -h host -u user -p password \\
-d my_database_66 -r 66 --dryrun
The release coordinator patches all mouse Core-like databases to
the latest release. She has checked out the 'ensembl' Git repo
in her ~/src directory:
$0 -h host -u user -p password \\
-t core -s mouse --gitdir=~/src
A genebuilder (username 'my') patches all her human databases to
the latest release.
$0 -h host -u user -p password \\
-s homo_sapiens -d 'my_%'
A genebuilder makes sure that all patches up to and including
those for release 66 are included in her database, without
actually applying any patch (any missing patches needs to be
manually checked!):
$0 -h host -u user -p password \\
-r 66 -d my_database --fix --dryrun
The genebuilder above has an evil twin who has mislaid their meta tables.
--fix threatens to apply ancient patches but they know their database
is correct until halfway through release 64. They wish to apply any
missing patches between release 64 and 66.
$0 -h host -u user -p password -r 66 \\
-d my_database --fix --oldest 64
The genebuilder above also has a doppleganger who decided they
wanted to patch for the last and current release of Ensembl alone. This
is useful for applying late patches. In this situation we will apply
patches for the current release (67) and the previous release (66).
$0 -h host -u user -p password -r 67 \\
-d my_database --fixlast
ABOUT_END
} ## end sub about