File Annotation
Not logged in
dbda8d6ce9 2007-07-21       drh: <html>
dbda8d6ce9 2007-07-21       drh: <head>
b807acf62e 2007-07-24       drh: <title>Fossil File Format</title>
dbda8d6ce9 2007-07-21       drh: </head>
dbda8d6ce9 2007-07-21       drh: <body bgcolor="white">
469002ccdf 2007-09-12       aku: <p>[ <a href="index.html">Index</a> ]</p>
469002ccdf 2007-09-12       aku: <hr>
dbda8d6ce9 2007-07-21       drh: <h1 align="center">
dbda8d6ce9 2007-07-21       drh: Fossil File Formats
dbda8d6ce9 2007-07-21       drh: </h1>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <p>
dbda8d6ce9 2007-07-21       drh: The global state of a fossil repository is determined by an unordered
f9f7cf5684 2007-11-24       drh: set of files.  A file in fossil is called an "artifact".
f9f7cf5684 2007-11-24       drh: An artifact might be a source code file, the text of a wiki page,
f9f7cf5684 2007-11-24       drh: part of a trouble ticket, or one of several special control artifacts
f9f7cf5684 2007-11-24       drh: used to show the relationships between other artifacts within the
f9f7cf5684 2007-11-24       drh: project.  Artifacts can be text or binary.
f9f7cf5684 2007-11-24       drh: </p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>
f9f7cf5684 2007-11-24       drh: Each artifact in the repository is named by its SHA1 hash.
f9f7cf5684 2007-11-24       drh: No prefixes or meta information is added to a artifact before
f9f7cf5684 2007-11-24       drh: its hash is computed.  The name of a artifact in the repository
0cd202a86e 2007-08-23       drh: is exactly the same SHA1 hash that is computed by sha1sum
0cd202a86e 2007-08-23       drh: on the file as it exists in your source tree.</p>
0cd202a86e 2007-08-23       drh: 
0cd202a86e 2007-08-23       drh: <p>
6680679c2e 2007-11-24       drh: Some artifacts have a particular format which gives them special
6680679c2e 2007-11-24       drh: meaning to fossil.  Fossil recognizes:</p>
6680679c2e 2007-11-24       drh: 
6680679c2e 2007-11-24       drh: <ul>
6680679c2e 2007-11-24       drh: <li> Manifests </li>
6680679c2e 2007-11-24       drh: <li> Clusters </li>
6680679c2e 2007-11-24       drh: <li> Control Artifacts </li>
6680679c2e 2007-11-24       drh: <li> Wiki Pages </li>
6680679c2e 2007-11-24       drh: <li> Ticket Changes </li>
6680679c2e 2007-11-24       drh: </ul>
6680679c2e 2007-11-24       drh: 
6680679c2e 2007-11-24       drh: <p>These five artifact types are described in the sequel.</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <h2>1.0 The Manifest</h2>
6680679c2e 2007-11-24       drh: 
6680679c2e 2007-11-24       drh: <p>A manifest defines a baseline or version of the project
6680679c2e 2007-11-24       drh: source tree.  The manifest contains a list of artifacts for
6680679c2e 2007-11-24       drh: each file in the project and the corresponding filenames, as
6680679c2e 2007-11-24       drh: well as information such as parent baselines, the name of the
6680679c2e 2007-11-24       drh: programmer who created the baseline, the date and time when
6680679c2e 2007-11-24       drh: the baseline was created, and any check-in comments associated
6680679c2e 2007-11-24       drh: with the baseline.</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>
f9f7cf5684 2007-11-24       drh: Any artifact in the repository that follows the syntactic rules
b807acf62e 2007-07-24       drh: of a manifest is a manifest.  Note that a manifest can
b807acf62e 2007-07-24       drh: be both a real manifest and also a content file, though this
b807acf62e 2007-07-24       drh: is rare.
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <p>
6680679c2e 2007-11-24       drh: A manifest is a text file.  Newline characters
6680679c2e 2007-11-24       drh: (ASCII 0x0a) separate the file into "cards".
f9f7cf5684 2007-11-24       drh: Each card begins with a single
f9f7cf5684 2007-11-24       drh: character "card type".  Zero or more arguments may follow
f9f7cf5684 2007-11-24       drh: the card type.  All arguments are separated from each other
f9f7cf5684 2007-11-24       drh: and from the card-type character by a single space
b807acf62e 2007-07-24       drh: character.  There is no surplus white space between arguments
b807acf62e 2007-07-24       drh: and no leading or trailing whitespace except for the newline
f9f7cf5684 2007-11-24       drh: character that acts as the card separator.
f9f7cf5684 2007-11-24       drh: </p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>
f9f7cf5684 2007-11-24       drh: All cards of the manifest occur in strict sorted lexicographical order.
f9f7cf5684 2007-11-24       drh: No card may be duplicated.
f9f7cf5684 2007-11-24       drh: The entire manifest may be PGP clear-signed, but otherwise it
b807acf62e 2007-07-24       drh: may contain no additional text or data beyond what is described here.
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <p>
f9f7cf5684 2007-11-24       drh: Allowed cards in the manifest are as follows:
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <blockquote>
b807acf62e 2007-07-24       drh: <b>C</b> <i>checkin-comment</i><br>
b807acf62e 2007-07-24       drh: <b>D</b> <i>time-and-date-stamp</i><br>
b807acf62e 2007-07-24       drh: <b>F</b> <i>filename</i> <i>SHA1-hash</i><br>
b807acf62e 2007-07-24       drh: <b>P</b> <i>SHA1-hash</i>+<br>
b807acf62e 2007-07-24       drh: <b>R</b> <i>repository-checksum</i><br>
b807acf62e 2007-07-24       drh: <b>U</b> <i>user-login</i><br>
b807acf62e 2007-07-24       drh: <b>Z</b> <i>manifest-checksum</i>
b807acf62e 2007-07-24       drh: </blockquote>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <p>
f9f7cf5684 2007-11-24       drh: A manifest must have exactly one C-card.  The sole argument to
f9f7cf5684 2007-11-24       drh: the C-card is a check-in comment that describes the check-in that
b807acf62e 2007-07-24       drh: the manifest defines.  The check-in comment is text.  The following
b807acf62e 2007-07-24       drh: escape sequences are applied to the text:
b807acf62e 2007-07-24       drh: A space (ASCII 0x20) is represented as "\s" (ASCII 0x5C, 0x73).  A
b807acf62e 2007-07-24       drh: newline (ASCII 0x0a) is "\n" (ASCII 0x6C, x6E).  A backslash
b807acf62e 2007-07-24       drh: (ASCII 0x5C) is represented as two backslashes "\\".  Apart from
b807acf62e 2007-07-24       drh: space and newline, no other whitespace characters are allowed in
b807acf62e 2007-07-24       drh: the check-in comment.  Nor are any unprintable characters allowed
b807acf62e 2007-07-24       drh: in the comment.
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <p>
f9f7cf5684 2007-11-24       drh: A manifest must have exactly one D-card.  The sole argument to
f9f7cf5684 2007-11-24       drh: the D-card is a date-time stamp in the ISO8601 format.  The
b807acf62e 2007-07-24       drh: date and time should be in coordinated universal time (UTC).
b807acf62e 2007-07-24       drh: The format is:
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <blockquote>
b807acf62e 2007-07-24       drh: <i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i>
b807acf62e 2007-07-24       drh: </blockquote>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <p>
f9f7cf5684 2007-11-24       drh: A manifest has zero or more F-cards.  Each F-card defines a file
b807acf62e 2007-07-24       drh: (other than the manifest itself) which is part of the baseline that
b807acf62e 2007-07-24       drh: the manifest defines.  There are two arguments.  The first argment
b807acf62e 2007-07-24       drh: is the pathname of the file in the baseline relative to the root
b807acf62e 2007-07-24       drh: of the project file hierarchy.  No ".." or "." directories are allowed
f9f7cf5684 2007-11-24       drh: within the filename.  Space characters are escaped as in C-card
b807acf62e 2007-07-24       drh: comment text.  Backslash characters and newlines are not allowed
b807acf62e 2007-07-24       drh: within filenames.  The directory separator character is a forward
f9f7cf5684 2007-11-24       drh: slash (ASCII 0x2F).  The second argument to the F-card is the
f9f7cf5684 2007-11-24       drh: full 40-character lower-case hexadecimal SHA1 hash of the content
f9f7cf5684 2007-11-24       drh: artifact.
f9f7cf5684 2007-11-24       drh: </p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>
f9f7cf5684 2007-11-24       drh: A manifest has zero or one P-cards.  Most manifests have one P-card.
f9f7cf5684 2007-11-24       drh: The P-card has a varying number of arguments that
b807acf62e 2007-07-24       drh: defines other manifests from which the current manifest
01e7596a98 2007-07-24       drh: is derived.  Each argument is an 40-character lowercase
b807acf62e 2007-07-24       drh: hexadecimal SHA1 of the predecessor manifest.  All arguments
f9f7cf5684 2007-11-24       drh: to the P-card must be unique to that line.
f9f7cf5684 2007-11-24       drh: The first predecessor is the direct ancestor of the manifest.
b807acf62e 2007-07-24       drh: Other arguments define manifests with which the first was
b807acf62e 2007-07-24       drh: merged to yield the current manifest.  Most manifests have
f9f7cf5684 2007-11-24       drh: a P-card with a single argument.  The first manifest in the
f9f7cf5684 2007-11-24       drh: project has no ancestors and thus has no P-card.
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <p>
f9f7cf5684 2007-11-24       drh: A manifest may optionally have a single R-card.  The R-card has
b807acf62e 2007-07-24       drh: a single argument which is the MD5 checksum of all files in
b807acf62e 2007-07-24       drh: the baseline except the manifest itself.  The checksum is expressed
01e7596a98 2007-07-24       drh: as 32-characters of lowercase hexadecimal.   The checksum is
b807acf62e 2007-07-24       drh: computed as follows:  For each file in the baseline (except for
63564202fd 2007-08-28       aku: the manifest itself) in strict sorted lexicographical order,
b807acf62e 2007-07-24       drh: take the pathname of the file relative to the root of the
b807acf62e 2007-07-24       drh: repository, append a single space (ASCII 0x20), the
b807acf62e 2007-07-24       drh: size of the file in ASCII decimal, a single newline
b807acf62e 2007-07-24       drh: character (ASCII 0x0A), and the complete text of the file.
b807acf62e 2007-07-24       drh: Compute the MD5 checksum of the the result.
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <p>
f9f7cf5684 2007-11-24       drh: Each manifest has a single U-card.  The argument to the U-card is
b807acf62e 2007-07-24       drh: the login of the user who created the manifest.  The login name
b807acf62e 2007-07-24       drh: is encoded using the same character escapes as is used for the
f9f7cf5684 2007-11-24       drh: check-in comment argument to the C-card.
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
b807acf62e 2007-07-24       drh: <p>
f9f7cf5684 2007-11-24       drh: A manifest has an option Z-card as its last line.  The argument
f9f7cf5684 2007-11-24       drh: to the Z-card is a 32-character lowercase hexadecimal MD5 hash
b807acf62e 2007-07-24       drh: of all prior lines of the manifest up to and including the newline
f9f7cf5684 2007-11-24       drh: character that immediately preceeds the "Z".  The Z-card is just
b807acf62e 2007-07-24       drh: a sanity check to prove that the manifest is well-formed and
b807acf62e 2007-07-24       drh: consistent.
dbda8d6ce9 2007-07-21       drh: </p>
dbda8d6ce9 2007-07-21       drh: 
2bc0e2c565 2007-09-21       drh: <h2>2.0 Clusters</h2>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <p>
f9f7cf5684 2007-11-24       drh: A cluster is a artifact that declares the existance of other artifacts.
2bc0e2c565 2007-09-21       drh: Clusters are used during repository synchronization to help
2bc0e2c565 2007-09-21       drh: reduce network traffic.
dbda8d6ce9 2007-07-21       drh: </p>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <p>
2bc0e2c565 2007-09-21       drh: Clusters follow a syntax that is very similar to manifests.
2bc0e2c565 2007-09-21       drh: A Cluster is a line-oriented text file.  Newline characters
f9f7cf5684 2007-11-24       drh: (ASCII 0x0a) separate the artifact into cards.  Each card begins with a single
f9f7cf5684 2007-11-24       drh: character "card type".  Zero or more arguments may follow
f9f7cf5684 2007-11-24       drh: the card type.  All arguments are separated from each other
f9f7cf5684 2007-11-24       drh: and from the card-type character by a single space
2bc0e2c565 2007-09-21       drh: character.  There is no surplus white space between arguments
2bc0e2c565 2007-09-21       drh: and no leading or trailing whitespace except for the newline
f9f7cf5684 2007-11-24       drh: character that acts as the card separator.
f9f7cf5684 2007-11-24       drh: All cards of a cluter occur in strict sorted lexicographical order.
f9f7cf5684 2007-11-24       drh: No card may be duplicated.
2bc0e2c565 2007-09-21       drh: The cluster may not contain additional text or data beyond
2bc0e2c565 2007-09-21       drh: what is described here.
f9f7cf5684 2007-11-24       drh: Unlike manifests, clusters are never PGP signed.
dbda8d6ce9 2007-07-21       drh: </p>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <p>
f9f7cf5684 2007-11-24       drh: Allowed cards in the cluster are as follows:
dbda8d6ce9 2007-07-21       drh: </p>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <blockquote>
6680679c2e 2007-11-24       drh: <b>M</b> <i>uuid</i><br />
f9f7cf5684 2007-11-24       drh: <b>Z</b> <i>checksum</i>
dbda8d6ce9 2007-07-21       drh: </blockquote>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <p>
f9f7cf5684 2007-11-24       drh: A cluster contains one or more "M" cards followed by a single "Z"
f9f7cf5684 2007-11-24       drh: line.  Each M card has a single argument which is the UUID of
f9f7cf5684 2007-11-24       drh: another artifact in the repository.  The Z card work exactly like
f9f7cf5684 2007-11-24       drh: the Z card of a manifest.  The argument to the Z card is the
2bc0e2c565 2007-09-21       drh: lower-case hexadecimal representation of the MD5 checksum of all
f9f7cf5684 2007-11-24       drh: prior cards in the cluster.  Note that the Z card is required
f9f7cf5684 2007-11-24       drh: on a cluster.
b807acf62e 2007-07-24       drh: </p>
b807acf62e 2007-07-24       drh: 
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <h2>3.0 Control Artifacts</h2>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>
f9f7cf5684 2007-11-24       drh: Control artifacts are used to assign properties to other artifacts
f9f7cf5684 2007-11-24       drh: within the repository.  The basic format of a control artifact is
f9f7cf5684 2007-11-24       drh: the same as a manifest or cluster.  A control artifact is a text
f9f7cf5684 2007-11-24       drh: files divided into cards by newline characters.  Each card has a
f9f7cf5684 2007-11-24       drh: single-character card type followed by arguments.  Spaces separate
f9f7cf5684 2007-11-24       drh: the card type and the arguments.  No surplus whitespace is allowed.
f9f7cf5684 2007-11-24       drh: All cards must occur in strict lexigraphical order.
dbda8d6ce9 2007-07-21       drh: </p>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <p>
f9f7cf5684 2007-11-24       drh: Allowed cards in a control artifact are as follows:
dbda8d6ce9 2007-07-21       drh: </p>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <blockquote>
f9f7cf5684 2007-11-24       drh: <b>D</b> <i>time-and-date-stamp</i><br />
6680679c2e 2007-11-24       drh: <b>T</b> (<b>+</b>|<b>-</b>|<b>*</b>)<i>tag-name  uuid  ?value?</i><br />
f9f7cf5684 2007-11-24       drh: <b>Z</b> <i>checksum</i><br />
f9f7cf5684 2007-11-24       drh: </blockquote>
2bc0e2c565 2007-09-21       drh: 
2bc0e2c565 2007-09-21       drh: <p>
f9f7cf5684 2007-11-24       drh: A control artifact must have one D card and one Z card and
f9f7cf5684 2007-11-24       drh: one or more or more T cards.  No other cards or other text is
f9f7cf5684 2007-11-24       drh: allowed in a control artifact.  Control artifacts might be PGP
f9f7cf5684 2007-11-24       drh: clearsigned.</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>The D card and the Z card of a control artifact are the same
f9f7cf5684 2007-11-24       drh: as in a manifest.</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>The T card represents a "tag" or property that is applied to
f9f7cf5684 2007-11-24       drh: some other artifact.  The T card has two or three values.  The
f9f7cf5684 2007-11-24       drh: second argument is the 40 character lowercase UUID of the artifact
f9f7cf5684 2007-11-24       drh: to which the tag is to be applied. The
f9f7cf5684 2007-11-24       drh: first value is the tag name.  The first character of the tag
f9f7cf5684 2007-11-24       drh: is either "+", "-", or "*".  A "+" means the tag should be added
f9f7cf5684 2007-11-24       drh: to the artifact.  The "-" means the tag should be removed.
f9f7cf5684 2007-11-24       drh: The "*" character means the tag should be added to the artifact
6680679c2e 2007-11-24       drh: and all direct decendents (but not branches) of the artifact down
6680679c2e 2007-11-24       drh: to but not including the first decendent that contains a
6680679c2e 2007-11-24       drh: more recent "-" tag with the same name.
f9f7cf5684 2007-11-24       drh: The optional third argument is the value of the tag.  A tag
6680679c2e 2007-11-24       drh: without a value is a boolean.</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>When two or more tags with the same name are applied to the
f9f7cf5684 2007-11-24       drh: same artifact, the tag with the latest (most recent) date is
f9f7cf5684 2007-11-24       drh: used.</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <p>Some tags have special meaning.  The "comment" tag when applied
f9f7cf5684 2007-11-24       drh: to a baseline will override the check-in comment of that baseline
f9f7cf5684 2007-11-24       drh: for display purposes.</p>
2bc0e2c565 2007-09-21       drh: 
2bc0e2c565 2007-09-21       drh: <h2>4.0 Wiki Pages</h2>
2bc0e2c565 2007-09-21       drh: 
6680679c2e 2007-11-24       drh: <p>A wiki page is an artifact with a format similar to manifests,
f9f7cf5684 2007-11-24       drh: clusters, and control artifacts.  The artifact is divided into
f9f7cf5684 2007-11-24       drh: cards by newline characters.  The format of each card is as in
f9f7cf5684 2007-11-24       drh: manifests, clusters, and control artifacts.  Wiki artifacts accept
f9f7cf5684 2007-11-24       drh: the following card types:</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <blockquote>
f9f7cf5684 2007-11-24       drh: <b>D</b> <i>time-and-date-stamp</i><br />
f9f7cf5684 2007-11-24       drh: <b>L</b> <i>wiki-title</i><br />
6680679c2e 2007-11-24       drh: <b>P</b> <i>parent-uuid</i>+<br />
f9f7cf5684 2007-11-24       drh: <b>U</b> <i>user-name</i><br />
6680679c2e 2007-11-24       drh: <b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
f9f7cf5684 2007-11-24       drh: <b>Z</b> <i>checksum</i>
f9f7cf5684 2007-11-24       drh: </blockquote>
f9f7cf5684 2007-11-24       drh: 
6680679c2e 2007-11-24       drh: <p>The D card is the date and time when the wiki page was edited.
6680679c2e 2007-11-24       drh: The P card specifies the parent wiki pages, if any.  The L card
6680679c2e 2007-11-24       drh: gives the name of the wiki page.  The U card specifies the login
6680679c2e 2007-11-24       drh: of the user who made this edit to the wiki page.  The Z card is
6680679c2e 2007-11-24       drh: the usual checksum over the either artifact.</p>
6680679c2e 2007-11-24       drh: 
6680679c2e 2007-11-24       drh: <p>The W card is used to specify the text of the wiki page.  The
6680679c2e 2007-11-24       drh: argument to the W card is an integer which is the number of bytes
6680679c2e 2007-11-24       drh: of text in the wiki page.  That text follows the newline character
6680679c2e 2007-11-24       drh: that terminates the W card.  The wiki text is always followed by one
6680679c2e 2007-11-24       drh: extra newline.</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <h2>5.0 Ticket Changes</h2>
6680679c2e 2007-11-24       drh: 
6680679c2e 2007-11-24       drh: <p>A ticket-change artifact represents a change to a trouble ticket.
6680679c2e 2007-11-24       drh: The following cards are allowed on a ticket change artifact:</p>
f9f7cf5684 2007-11-24       drh: 
f9f7cf5684 2007-11-24       drh: <blockquote>
f9f7cf5684 2007-11-24       drh: <b>D</b> <i>time-and-date-stamp</i><br />
f9f7cf5684 2007-11-24       drh: <b>J</b> ?<b>+</b>?<i>name value</i><br />
f9f7cf5684 2007-11-24       drh: <b>K</b> <i>ticket-uuid</i><br />
f9f7cf5684 2007-11-24       drh: <b>U</b> <i>user-name</i><br />
f9f7cf5684 2007-11-24       drh: <b>Z</b> <i>checksum</i>
dbda8d6ce9 2007-07-21       drh: </blockquote>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <p>
6680679c2e 2007-11-24       drh: The D card is the usual date and time stamp and represents the point
6680679c2e 2007-11-24       drh: in time when the change was entered.  The U card is the login of the
6680679c2e 2007-11-24       drh: programmer who entered this change.  The Z card is the checksum over
6680679c2e 2007-11-24       drh: the entire artifact.</p>
6680679c2e 2007-11-24       drh: 
6680679c2e 2007-11-24       drh: <p>
6680679c2e 2007-11-24       drh: Every ticket has a UUID.  The ticket to which this change is applied
6680679c2e 2007-11-24       drh: is specified by the K card.  A ticket exists if it contains one or
6680679c2e 2007-11-24       drh: more changes.  The first "change" to a ticket is what brings the
6680679c2e 2007-11-24       drh: ticket into existance.</p>
6680679c2e 2007-11-24       drh: 
2bc0e2c565 2007-09-21       drh: <p>
6680679c2e 2007-11-24       drh: J cards specify changes to "fields" of the ticket.  Each fossil
6680679c2e 2007-11-24       drh: server has a ticket configuration which specifies the fields its
6680679c2e 2007-11-24       drh: understands.  This is not a limit on the fields that can appear
6680679c2e 2007-11-24       drh: on the J cards, however.  If a J card specifies a field that a
6680679c2e 2007-11-24       drh: particular fossil server does not recognize, then that J card
6680679c2e 2007-11-24       drh: is simply ignored.</p>
dbda8d6ce9 2007-07-21       drh: 
dbda8d6ce9 2007-07-21       drh: <p>
6680679c2e 2007-11-24       drh: The first argument of the J card is the field name.  The second
6680679c2e 2007-11-24       drh: value is the field value.  If the field name begins with "+" then
6680679c2e 2007-11-24       drh: the value is appended to the prior value.  Otherwise, the value
6680679c2e 2007-11-24       drh: on the J card replaces any previous value of the field.
6680679c2e 2007-11-24       drh: The field name and value are both encoded using the character
6680679c2e 2007-11-24       drh: escapes defined for the C card of a manifest.
dbda8d6ce9 2007-07-21       drh: </p>