Name
sqitchchanges -Specifying changes for Sqitch
Description
Many Sqitch commands take change parameters as arguments. Depending on the command, they denote a specific change or, for commands which walk change history or the change plan (such as sqitch log
), all changes which can be reached from that change.
Change Names
A change name, such as that passed to sqitch add
and written to the plan file has a few limitations on the characters it may contain. The same limitations apply to tag names. The rules are:
Must be at least one character.
Must contain no blank characters.
The first character may not be punctuation.
Last letter may not be punctuation.
Must not end in "~", "^", "/", "=", or "%" followed by digits.
All other characters may be any UTF-8 character other than ":", "@", and "#".
Note that "_" (underscore) is never considered punctuation. Some examples of valid names:
Some examples of invalid names:
Specifying Changes
A change parameter names a change object. It uses what is called an extended SHA1 syntax. Here are various ways to spell change names:
<change_name>
, e.g.,users_table
-
The name of a change itself, as it was added to the plan via
sqitch add
. @<tag_name>
, e.g.,@rc1
-
The change as of the named tag. Tags can be added to the plan via
sqitch tag
. <change_name>@<tag_name>
, e.g.,users_table@beta1
-
The named change as of a tag, also known as a tag-qualified change name. For change iteration commands (such as
sqitch log
), this means the instance of a change with that name before the specified tag. For dependency parameters (such as insqitch add
), this means any instance of a change just before that tag, or at any time after the tag. <sha1>
, e.g.,40763784148fa190d75bad036730ef44d1c2eac6
-
The change full SHA1 ID (40-byte hexadecimal string). In some cases, such as
sqitch add
, the ID may refer to a change in another Sqitch project. <project>:<change_name>
, e.g.,mybase:users_table
-
The name of a change in a specific project. Non-SHA1 change parameters without a project prefix are assumed to belong to the current project. Most useful for declaring a dependency on a change from another project in
sqitch add
. <project>:@<tag_name>
, e.g.,mybase:@rc1
-
The name of a tag in an the named project.
<project>:<change_name>@<tag_name>
, e.g.,project:users_table@beta1
-
A tag-qualified named change in the named project.
<project>:<sha1>
, e.g.,mybase:40763784148fa190d75bad036730ef44d1c2eac6
-
The full SHA1 ID from another project. Probably redundant, since the SHA1 I should itself be sufficient. But useful for declaring dependencies in the current project so that
sqitch add
orsqitch rework
will validate that the specified change is in the current project. @HEAD
-
Special symbolic name for the last change in the plan.
@ROOT
-
Special symbolic name for the first change in the plan.
@FIRST
-
Special symbolic name for the first change deployed to the database from the current project.
@LAST
-
Special symbolic name for the last change deployed to the database from the current project.
<change>^
, e.g.,@HEAD^^
,@LAST^3
,@beta^2
-
A suffix
^
to a symbolic or actual name means the change prior to that change. Two^
s indicate the second prior change. Additional prior changes can be specified as^<n>
, where<n>
represents the number of changes to go back. <change>~
, e.g.,@ROOT~
,@FIRST~~
,@bar~4
-
A suffix
~
to a symbolic or actual name means the change after that change. Two~
s indicate the second following change. Additional following changes can be specified as~<n>
, where<n>
represents the number of changes to go forward.
Sqitch
Part of the sqitch suite.