Name
sqitch-init - Create a new Sqitch project
Synopsis
sqitch init <project>
sqitch init <project> --uri <uri>
Description
This command creates an new Sqitch project – basically a sqitch.conf file,
a sqitch.plan file, and deploy, revert, and verify subdirectories.
Running sqitch init in an existing project is safe. It will not overwrite things that are already there.
Options
-
--urisqitch init widgets --uri https://github.com/me/wigetsOptional URI to associate with the project. If present, the URI will be written to the project plan and used for added uniqueness in hashed object IDs, as well as to prevent the deployment of another project with the same name but different URI.
-
--enginesqitch init widgets --engine pgSpecifies the default database engine to use in the project. Supported engines include:
pg-pg- PostgreSQL, Postgres-XC, and YugabyteDBsqlite- SQLiteoracle- Oraclemysql- MySQL and MariaDBfirebird- Firebirdvertica- Verticaexasol- Exasolsnowflake- Snowflakecockroach- CockroachDBclickhouse- ClickHouse
-
--top-dirsqitch init widgets --top-dir sqlSpecifies the top directory to use for the project. Typically contains the deployment plan file and the change script directories.
-
--plan-file -
-fsqitch init widgets --plan-file my.planSpecifies the path to the deployment plan file. Defaults to
$top_dir/sqitch.plan. -
--extensionsqitch init widgets --extension ddlSpecifies the file name extension to use for change script file names. Defaults to
sql. -
--dirsqitch init widgets --dir deploy=dep --dir revert=rev --dir verify=tstSets the path to a script directory. May be specified multiple times. Supported keys are:
deployrevertverifyreworkedreworked_deployreworked_revertreworked_verify
-
--targetsqitch init widgets --target db:pg:widgetsSpecifies the name or URI of the default target database. If specified as a name, the default URI for the target will be
db:$engine:. -
--registrysqitch init widgets --registry metaSpecifies the name of the database object where Sqitch’s state and history data is stored. Typically a schema name (as in PostgreSQL and Oracle) or a database name (as in SQLite and MySQL). Defaults to
sqitch. -
--clientsqitch init widgets --client /usr/local/pgsql/bin/psqlSpecifies the path to the command-line client for the database engine. Defaults to a client in the current path named appropriately for the specified engine.
Configuration
The most important thing sqitch init does is create the project plan file,
sqitch.conf. The options determine what gets written to the file:
-
--engineSets the
core.engineconfiguration variable. -
--top-dirSets the
core.top_dirconfiguration variable. -
--plan-file -
-fSets the
core.plan_fileconfiguration variable. -
--extensionSets the
core.extensionconfiguration variable. -
--dirSets the following configuration variables:
deploysetscore.deploy_dirrevertsetscore.revert_dirverifysetscore.verify_dirreworkedsetscore.reworked_dirreworked_deploysetscore.reworked_deploy_dirreworked_deploysetscore.reworked_revert_dirreworked_deploysetscore.reworked_verify_dir
-
--targetSets the
engine.$engine.targetconfiguration variable if--engineis also passed and, if it’s a target name,target.$target.uri -
--registrySets the
engine.$engine.registryconfiguration variable if--engineis also passed. -
--clientSets the
engine.$engine.clientconfiguration variable if--engineis also passed. -
-s -
--setSet a variable name and value for use by the database engine client, if it supports variables. The format must be
name=value, e.g.,--set defuser='Homer Simpson'. Variables are set incore.variables.
As a general rule, you likely won’t need any of these options except for
--engine, since many commands need to know what engine to use, and
specifying it on the command-line forever after would be annoying.
These variables will only be written if their corresponding options are
specified. Otherwise, core options get written as comments with user or system
configuration settings, or, failing any values from those locations, from
their default values. If no defaults are specified, they will still be
written, commented out, with a bar = and no value. This allows one to know
what sorts of things are available to edit.
Examples
Start a new Sqitch project named “quack” using the SQLite engine, setting the
top directory for the project to sqlite:
sqitch init --engine sqlite --top-dir sqlite quack
Start a new Sqitch project named “bey” using the PostgreSQL engine, setting
the top directory to postgres, script extension to ddl, reworked
directory to reworked and a version-specific client:
sqitch init --engine pg \
--top-dir postgres \
--client /opt/pgsql-9.1/bin/psql \
--extension ddl --dir reworked=reworked \
bey
See Also
-
Describes how Sqitch hierarchical engine and target configuration works.
-
Command to manage database engine configuration.
-
Command to manage target database configuration.
-
Command to manage all Sqitch configuration.
Sqitch
Part of the sqitch suite.
