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 852dbbb65d 2008-02-13 drh: set of artifacts. 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>