Fossil SCM

Add the N-card to control artifacts for wiki, checkins, events, and attachments, which opens up the possibility (not yet implemented) of being able to save wiki text, check-in comments, event text, and attachment descriptions in a variety of formats, such as text/plain, text/html, or text/x-markdown.

drh 2013-03-29 16:38 UTC markdown
Commit 2336a2d86e3eb7b390a5fb344605fd88a6273c58
--- src/manifest.c
+++ src/manifest.c
@@ -68,10 +68,11 @@
6868
double rDate; /* Date and time from D card. 0.0 if no D card. */
6969
char *zUser; /* Name of the user from the U card. */
7070
char *zRepoCksum; /* MD5 checksum of the baseline content. R card. */
7171
char *zWiki; /* Text of the wiki page. W card. */
7272
char *zWikiTitle; /* Name of the wiki page. L card. */
73
+ char *zMimetype; /* Mime type of wiki or comment text. N card. */
7374
double rEventDate; /* Date of an event. E card. */
7475
char *zEventId; /* UUID for an event. E card. */
7576
char *zTicketUuid; /* UUID for a ticket. K card. */
7677
char *zAttachName; /* Filename of an attachment. A card. */
7778
char *zAttachSrc; /* UUID of document being attached. A card. */
@@ -642,10 +643,22 @@
642643
if( i>0 && fossil_strcmp(p->azCChild[i-1], zUuid)>=0 ){
643644
SYNTAX("M-card in the wrong order");
644645
}
645646
break;
646647
}
648
+
649
+ /*
650
+ ** N <uuid>
651
+ **
652
+ ** An N-line identifies the mimetype of wiki or comment text.
653
+ */
654
+ case 'N': {
655
+ if( p->zMimetype!=0 ) SYNTAX("more than one N-card");
656
+ p->zMimetype = next_token(&x,0);
657
+ if( p->zMimetype==0 ) SYNTAX("missing mimetype on N-card");
658
+ break;
659
+ }
647660
648661
/*
649662
** P <uuid> ...
650663
**
651664
** Specify one or more other artifacts where are the parents of
@@ -858,10 +871,11 @@
858871
|| p->zTicketUuid
859872
|| p->zWiki
860873
|| p->zWikiTitle
861874
|| p->zEventId
862875
|| p->zAttachName
876
+ || p->zMimetype
863877
){
864878
SYNTAX("cluster contains a card other than M- or Z-");
865879
}
866880
if( !seenZ ) SYNTAX("missing Z-card on cluster");
867881
p->type = CFTYPE_CLUSTER;
@@ -873,10 +887,11 @@
873887
if( p->nCChild>0 ) SYNTAX("M-card in ticket");
874888
if( p->nTag>0 ) SYNTAX("T-card in ticket");
875889
if( p->zTicketUuid==0 ) SYNTAX("missing K-card in ticket");
876890
if( p->zUser==0 ) SYNTAX("missing U-card in ticket");
877891
if( p->zAttachName ) SYNTAX("A-card in ticket");
892
+ if( p->zMimetype) SYNTAX("N-card in ticket");
878893
if( !seenZ ) SYNTAX("missing Z-card in ticket");
879894
p->type = CFTYPE_TICKET;
880895
}else if( p->zEventId ){
881896
if( p->rDate<=0.0 ) SYNTAX("missing date for event");
882897
if( p->nCChild>0 ) SYNTAX("M-card in event");
@@ -903,10 +918,11 @@
903918
if( p->rDate<=0.0 ) SYNTAX("date missing on tag");
904919
if( p->nParent>0 ) SYNTAX("P-card on tag");
905920
if( p->zWikiTitle ) SYNTAX("L-card on tag");
906921
if( p->zTicketUuid ) SYNTAX("K-card in tag");
907922
if( p->zAttachName ) SYNTAX("A-card in tag");
923
+ if( p->zMimetype ) SYNTAX("N-card in tag");
908924
if( !seenZ ) SYNTAX("missing Z-card on tag");
909925
p->type = CFTYPE_CONTROL;
910926
}else if( p->zAttachName ){
911927
if( p->nCChild>0 ) SYNTAX("M-card in attachment");
912928
if( p->rDate<=0.0 ) SYNTAX("missing date in attachment");
913929
--- src/manifest.c
+++ src/manifest.c
@@ -68,10 +68,11 @@
68 double rDate; /* Date and time from D card. 0.0 if no D card. */
69 char *zUser; /* Name of the user from the U card. */
70 char *zRepoCksum; /* MD5 checksum of the baseline content. R card. */
71 char *zWiki; /* Text of the wiki page. W card. */
72 char *zWikiTitle; /* Name of the wiki page. L card. */
 
73 double rEventDate; /* Date of an event. E card. */
74 char *zEventId; /* UUID for an event. E card. */
75 char *zTicketUuid; /* UUID for a ticket. K card. */
76 char *zAttachName; /* Filename of an attachment. A card. */
77 char *zAttachSrc; /* UUID of document being attached. A card. */
@@ -642,10 +643,22 @@
642 if( i>0 && fossil_strcmp(p->azCChild[i-1], zUuid)>=0 ){
643 SYNTAX("M-card in the wrong order");
644 }
645 break;
646 }
 
 
 
 
 
 
 
 
 
 
 
 
647
648 /*
649 ** P <uuid> ...
650 **
651 ** Specify one or more other artifacts where are the parents of
@@ -858,10 +871,11 @@
858 || p->zTicketUuid
859 || p->zWiki
860 || p->zWikiTitle
861 || p->zEventId
862 || p->zAttachName
 
863 ){
864 SYNTAX("cluster contains a card other than M- or Z-");
865 }
866 if( !seenZ ) SYNTAX("missing Z-card on cluster");
867 p->type = CFTYPE_CLUSTER;
@@ -873,10 +887,11 @@
873 if( p->nCChild>0 ) SYNTAX("M-card in ticket");
874 if( p->nTag>0 ) SYNTAX("T-card in ticket");
875 if( p->zTicketUuid==0 ) SYNTAX("missing K-card in ticket");
876 if( p->zUser==0 ) SYNTAX("missing U-card in ticket");
877 if( p->zAttachName ) SYNTAX("A-card in ticket");
 
878 if( !seenZ ) SYNTAX("missing Z-card in ticket");
879 p->type = CFTYPE_TICKET;
880 }else if( p->zEventId ){
881 if( p->rDate<=0.0 ) SYNTAX("missing date for event");
882 if( p->nCChild>0 ) SYNTAX("M-card in event");
@@ -903,10 +918,11 @@
903 if( p->rDate<=0.0 ) SYNTAX("date missing on tag");
904 if( p->nParent>0 ) SYNTAX("P-card on tag");
905 if( p->zWikiTitle ) SYNTAX("L-card on tag");
906 if( p->zTicketUuid ) SYNTAX("K-card in tag");
907 if( p->zAttachName ) SYNTAX("A-card in tag");
 
908 if( !seenZ ) SYNTAX("missing Z-card on tag");
909 p->type = CFTYPE_CONTROL;
910 }else if( p->zAttachName ){
911 if( p->nCChild>0 ) SYNTAX("M-card in attachment");
912 if( p->rDate<=0.0 ) SYNTAX("missing date in attachment");
913
--- src/manifest.c
+++ src/manifest.c
@@ -68,10 +68,11 @@
68 double rDate; /* Date and time from D card. 0.0 if no D card. */
69 char *zUser; /* Name of the user from the U card. */
70 char *zRepoCksum; /* MD5 checksum of the baseline content. R card. */
71 char *zWiki; /* Text of the wiki page. W card. */
72 char *zWikiTitle; /* Name of the wiki page. L card. */
73 char *zMimetype; /* Mime type of wiki or comment text. N card. */
74 double rEventDate; /* Date of an event. E card. */
75 char *zEventId; /* UUID for an event. E card. */
76 char *zTicketUuid; /* UUID for a ticket. K card. */
77 char *zAttachName; /* Filename of an attachment. A card. */
78 char *zAttachSrc; /* UUID of document being attached. A card. */
@@ -642,10 +643,22 @@
643 if( i>0 && fossil_strcmp(p->azCChild[i-1], zUuid)>=0 ){
644 SYNTAX("M-card in the wrong order");
645 }
646 break;
647 }
648
649 /*
650 ** N <uuid>
651 **
652 ** An N-line identifies the mimetype of wiki or comment text.
653 */
654 case 'N': {
655 if( p->zMimetype!=0 ) SYNTAX("more than one N-card");
656 p->zMimetype = next_token(&x,0);
657 if( p->zMimetype==0 ) SYNTAX("missing mimetype on N-card");
658 break;
659 }
660
661 /*
662 ** P <uuid> ...
663 **
664 ** Specify one or more other artifacts where are the parents of
@@ -858,10 +871,11 @@
871 || p->zTicketUuid
872 || p->zWiki
873 || p->zWikiTitle
874 || p->zEventId
875 || p->zAttachName
876 || p->zMimetype
877 ){
878 SYNTAX("cluster contains a card other than M- or Z-");
879 }
880 if( !seenZ ) SYNTAX("missing Z-card on cluster");
881 p->type = CFTYPE_CLUSTER;
@@ -873,10 +887,11 @@
887 if( p->nCChild>0 ) SYNTAX("M-card in ticket");
888 if( p->nTag>0 ) SYNTAX("T-card in ticket");
889 if( p->zTicketUuid==0 ) SYNTAX("missing K-card in ticket");
890 if( p->zUser==0 ) SYNTAX("missing U-card in ticket");
891 if( p->zAttachName ) SYNTAX("A-card in ticket");
892 if( p->zMimetype) SYNTAX("N-card in ticket");
893 if( !seenZ ) SYNTAX("missing Z-card in ticket");
894 p->type = CFTYPE_TICKET;
895 }else if( p->zEventId ){
896 if( p->rDate<=0.0 ) SYNTAX("missing date for event");
897 if( p->nCChild>0 ) SYNTAX("M-card in event");
@@ -903,10 +918,11 @@
918 if( p->rDate<=0.0 ) SYNTAX("date missing on tag");
919 if( p->nParent>0 ) SYNTAX("P-card on tag");
920 if( p->zWikiTitle ) SYNTAX("L-card on tag");
921 if( p->zTicketUuid ) SYNTAX("K-card in tag");
922 if( p->zAttachName ) SYNTAX("A-card in tag");
923 if( p->zMimetype ) SYNTAX("N-card in tag");
924 if( !seenZ ) SYNTAX("missing Z-card on tag");
925 p->type = CFTYPE_CONTROL;
926 }else if( p->zAttachName ){
927 if( p->nCChild>0 ) SYNTAX("M-card in attachment");
928 if( p->rDate<=0.0 ) SYNTAX("missing date in attachment");
929
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -99,10 +99,11 @@
9999
<blockquote>
100100
<b>B</b> <i>baseline-manifest</i><br>
101101
<b>C</b> <i>checkin-comment</i><br>
102102
<b>D</b> <i>time-and-date-stamp</i><br>
103103
<b>F</b> <i>filename</i> <i>SHA1-hash</i> <i>permissions</i> <i>old-name</i><br>
104
+<b>N</b> <i>mimetype</i>
104105
<b>P</b> <i>SHA1-hash</i>+<br>
105106
<b>Q</b> (<b>+</b>|<b>-</b>)<i>SHA1-hash ?SHA1-hash?</i><br>
106107
<b>R</b> <i>repository-checksum</i><br>
107108
<b>T</b> (<b>+</b>|<b>-</b>|<b>*</b>)<i>tag-name <b>*</b> ?value?</i><br>
108109
<b>U</b> <i>user-login</i><br>
@@ -158,10 +159,14 @@
158159
if desired but is optional. The file format might be extended with
159160
new permission letters in the future.
160161
The optional 4th argument is the name of the same file as it existed in
161162
the parent check-in. If the name of the file is unchanged from its
162163
parent, then the 4th argument is omitted.
164
+
165
+A manifest has zero or one N-cards. The N-card specifies the mimetype for the
166
+text in the comment of the C-card. If the N-card is omitted, a default mimetype
167
+is used.
163168
164169
A manifest has zero or one P-cards. Most manifests have one P-card.
165170
The P-card has a varying number of arguments that
166171
defines other manifests from which the current manifest
167172
is derived. Each argument is an 40-character lowercase
@@ -343,19 +348,23 @@
343348
the following card types:
344349
345350
<blockquote>
346351
<b>D</b> <i>time-and-date-stamp</i><br />
347352
<b>L</b> <i>wiki-title</i><br />
353
+<b>N</b> <i>mimetype</i><br />
348354
<b>P</b> <i>parent-artifact-id</i>+<br />
349355
<b>U</b> <i>user-name</i><br />
350356
<b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
351357
<b>Z</b> <i>checksum</i>
352358
</blockquote>
353359
354360
The D card is the date and time when the wiki page was edited.
355361
The P card specifies the parent wiki pages, if any. The L card
356
-gives the name of the wiki page. The U card specifies the login
362
+gives the name of the wiki page. The optional N card specifies
363
+the mimetype of the wiki text. If the N card is omitted, the
364
+mimetype is assumed to be text/x-fossil.
365
+The U card specifies the login
357366
of the user who made this edit to the wiki page. The Z card is
358367
the usual checksum over the either artifact and is required.
359368
360369
The W card is used to specify the text of the wiki page. The
361370
argument to the W card is an integer which is the number of bytes
@@ -422,10 +431,11 @@
422431
423432
<blockquote>
424433
<b>A</b> <i>filename target</i> ?<i>source</i>?<br />
425434
<b>C</b> <i>comment</i><br />
426435
<b>D</b> <i>time-and-date-stamp</i><br />
436
+<b>N</b> <i>mimetype</i><br />
427437
<b>U</b> <i>user-name</i><br />
428438
<b>Z</b> <i>checksum</i>
429439
</blockquote>
430440
431441
The A card specifies a filename for the attachment in its first argument.
@@ -438,10 +448,14 @@
438448
The C card is an optional comment describing what the attachment is about.
439449
The C card is optional, but there can only be one.
440450
441451
A single D card is required to give the date and time when the attachment
442452
was applied.
453
+
454
+There may be zero or one N cards. The N card specifies the mimetype of the
455
+comment text provided in the C card. If the N card is omitted, the C card
456
+mimetype is taken to be text/plain.
443457
444458
A single U card gives the name of the user to added the attachment.
445459
If an attachment is added anonymously, then the U card may be omitted.
446460
447461
The Z card is the usual checksum over the rest of the attachment artifact.
@@ -459,10 +473,11 @@
459473
460474
<blockquote>
461475
<b>C</b> <i>comment</i><br>
462476
<b>D</b> <i>time-and-date-stamp</i><br />
463477
<b>E</b> <i>event-time</i> <i>event-id</i><br />
478
+<b>N</b> <i>mimetype</i><br />
464479
<b>P</b> <i>parent-artifact-id</i>+<br />
465480
<b>T</b> <b>+</b><i>tag-name</i> <b>*</b> <i>value</i><br />
466481
<b>U</b> <i>user-name</i><br />
467482
<b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
468483
<b>Z</b> <i>checksum</i>
@@ -478,10 +493,15 @@
478493
A single E card gives the time of the event (the point on the timeline
479494
where the event is displayed) and a unique identifier for the event.
480495
When there are multiple artifacts with the same event-id, the one with
481496
the most recent D card is the only one used. The event-id must be a
482497
40-character lower-case hexadecimal string.
498
+
499
+The optional N card specifies the mimetype of the text of the event
500
+that is contained in the W card. If the N card is omitted, then the
501
+W card text mimetype is assumed to be text/x-fossil, which is the
502
+Fossil wiki format.
483503
484504
The option P card specifies a prior event with the same event-id from
485505
which the current event is an edit. The P card is a hint to the system
486506
that it might be space efficient to store one event as a delta of the
487507
other.
@@ -628,10 +648,20 @@
628648
<td align=center>&nbsp;</td>
629649
<td align=center>&nbsp;</td>
630650
<td align=center>&nbsp;</td>
631651
<td align=center>&nbsp;</td>
632652
</tr>
653
+<tr>
654
+<td><b>N</b> <i>mimetype</i></td>
655
+<td align=center><b>X</b></td>
656
+<td align=center>&nbsp;</td>
657
+<td align=center>&nbsp;</td>
658
+<td align=center><b>X</b></td>
659
+<td align=center>&nbsp;</td>
660
+<td align=center><b>X</b></td>
661
+<td align=center><b>X</b></td>
662
+</tr>
633663
<tr>
634664
<td><b>P</b> <i>uuid ...</i></td>
635665
<td align=center><b>X</b></td>
636666
<td align=center>&nbsp;</td>
637667
<td align=center>&nbsp;</td>
638668
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -99,10 +99,11 @@
99 <blockquote>
100 <b>B</b> <i>baseline-manifest</i><br>
101 <b>C</b> <i>checkin-comment</i><br>
102 <b>D</b> <i>time-and-date-stamp</i><br>
103 <b>F</b> <i>filename</i> <i>SHA1-hash</i> <i>permissions</i> <i>old-name</i><br>
 
104 <b>P</b> <i>SHA1-hash</i>+<br>
105 <b>Q</b> (<b>+</b>|<b>-</b>)<i>SHA1-hash ?SHA1-hash?</i><br>
106 <b>R</b> <i>repository-checksum</i><br>
107 <b>T</b> (<b>+</b>|<b>-</b>|<b>*</b>)<i>tag-name <b>*</b> ?value?</i><br>
108 <b>U</b> <i>user-login</i><br>
@@ -158,10 +159,14 @@
158 if desired but is optional. The file format might be extended with
159 new permission letters in the future.
160 The optional 4th argument is the name of the same file as it existed in
161 the parent check-in. If the name of the file is unchanged from its
162 parent, then the 4th argument is omitted.
 
 
 
 
163
164 A manifest has zero or one P-cards. Most manifests have one P-card.
165 The P-card has a varying number of arguments that
166 defines other manifests from which the current manifest
167 is derived. Each argument is an 40-character lowercase
@@ -343,19 +348,23 @@
343 the following card types:
344
345 <blockquote>
346 <b>D</b> <i>time-and-date-stamp</i><br />
347 <b>L</b> <i>wiki-title</i><br />
 
348 <b>P</b> <i>parent-artifact-id</i>+<br />
349 <b>U</b> <i>user-name</i><br />
350 <b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
351 <b>Z</b> <i>checksum</i>
352 </blockquote>
353
354 The D card is the date and time when the wiki page was edited.
355 The P card specifies the parent wiki pages, if any. The L card
356 gives the name of the wiki page. The U card specifies the login
 
 
 
357 of the user who made this edit to the wiki page. The Z card is
358 the usual checksum over the either artifact and is required.
359
360 The W card is used to specify the text of the wiki page. The
361 argument to the W card is an integer which is the number of bytes
@@ -422,10 +431,11 @@
422
423 <blockquote>
424 <b>A</b> <i>filename target</i> ?<i>source</i>?<br />
425 <b>C</b> <i>comment</i><br />
426 <b>D</b> <i>time-and-date-stamp</i><br />
 
427 <b>U</b> <i>user-name</i><br />
428 <b>Z</b> <i>checksum</i>
429 </blockquote>
430
431 The A card specifies a filename for the attachment in its first argument.
@@ -438,10 +448,14 @@
438 The C card is an optional comment describing what the attachment is about.
439 The C card is optional, but there can only be one.
440
441 A single D card is required to give the date and time when the attachment
442 was applied.
 
 
 
 
443
444 A single U card gives the name of the user to added the attachment.
445 If an attachment is added anonymously, then the U card may be omitted.
446
447 The Z card is the usual checksum over the rest of the attachment artifact.
@@ -459,10 +473,11 @@
459
460 <blockquote>
461 <b>C</b> <i>comment</i><br>
462 <b>D</b> <i>time-and-date-stamp</i><br />
463 <b>E</b> <i>event-time</i> <i>event-id</i><br />
 
464 <b>P</b> <i>parent-artifact-id</i>+<br />
465 <b>T</b> <b>+</b><i>tag-name</i> <b>*</b> <i>value</i><br />
466 <b>U</b> <i>user-name</i><br />
467 <b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
468 <b>Z</b> <i>checksum</i>
@@ -478,10 +493,15 @@
478 A single E card gives the time of the event (the point on the timeline
479 where the event is displayed) and a unique identifier for the event.
480 When there are multiple artifacts with the same event-id, the one with
481 the most recent D card is the only one used. The event-id must be a
482 40-character lower-case hexadecimal string.
 
 
 
 
 
483
484 The option P card specifies a prior event with the same event-id from
485 which the current event is an edit. The P card is a hint to the system
486 that it might be space efficient to store one event as a delta of the
487 other.
@@ -628,10 +648,20 @@
628 <td align=center>&nbsp;</td>
629 <td align=center>&nbsp;</td>
630 <td align=center>&nbsp;</td>
631 <td align=center>&nbsp;</td>
632 </tr>
 
 
 
 
 
 
 
 
 
 
633 <tr>
634 <td><b>P</b> <i>uuid ...</i></td>
635 <td align=center><b>X</b></td>
636 <td align=center>&nbsp;</td>
637 <td align=center>&nbsp;</td>
638
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -99,10 +99,11 @@
99 <blockquote>
100 <b>B</b> <i>baseline-manifest</i><br>
101 <b>C</b> <i>checkin-comment</i><br>
102 <b>D</b> <i>time-and-date-stamp</i><br>
103 <b>F</b> <i>filename</i> <i>SHA1-hash</i> <i>permissions</i> <i>old-name</i><br>
104 <b>N</b> <i>mimetype</i>
105 <b>P</b> <i>SHA1-hash</i>+<br>
106 <b>Q</b> (<b>+</b>|<b>-</b>)<i>SHA1-hash ?SHA1-hash?</i><br>
107 <b>R</b> <i>repository-checksum</i><br>
108 <b>T</b> (<b>+</b>|<b>-</b>|<b>*</b>)<i>tag-name <b>*</b> ?value?</i><br>
109 <b>U</b> <i>user-login</i><br>
@@ -158,10 +159,14 @@
159 if desired but is optional. The file format might be extended with
160 new permission letters in the future.
161 The optional 4th argument is the name of the same file as it existed in
162 the parent check-in. If the name of the file is unchanged from its
163 parent, then the 4th argument is omitted.
164
165 A manifest has zero or one N-cards. The N-card specifies the mimetype for the
166 text in the comment of the C-card. If the N-card is omitted, a default mimetype
167 is used.
168
169 A manifest has zero or one P-cards. Most manifests have one P-card.
170 The P-card has a varying number of arguments that
171 defines other manifests from which the current manifest
172 is derived. Each argument is an 40-character lowercase
@@ -343,19 +348,23 @@
348 the following card types:
349
350 <blockquote>
351 <b>D</b> <i>time-and-date-stamp</i><br />
352 <b>L</b> <i>wiki-title</i><br />
353 <b>N</b> <i>mimetype</i><br />
354 <b>P</b> <i>parent-artifact-id</i>+<br />
355 <b>U</b> <i>user-name</i><br />
356 <b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
357 <b>Z</b> <i>checksum</i>
358 </blockquote>
359
360 The D card is the date and time when the wiki page was edited.
361 The P card specifies the parent wiki pages, if any. The L card
362 gives the name of the wiki page. The optional N card specifies
363 the mimetype of the wiki text. If the N card is omitted, the
364 mimetype is assumed to be text/x-fossil.
365 The U card specifies the login
366 of the user who made this edit to the wiki page. The Z card is
367 the usual checksum over the either artifact and is required.
368
369 The W card is used to specify the text of the wiki page. The
370 argument to the W card is an integer which is the number of bytes
@@ -422,10 +431,11 @@
431
432 <blockquote>
433 <b>A</b> <i>filename target</i> ?<i>source</i>?<br />
434 <b>C</b> <i>comment</i><br />
435 <b>D</b> <i>time-and-date-stamp</i><br />
436 <b>N</b> <i>mimetype</i><br />
437 <b>U</b> <i>user-name</i><br />
438 <b>Z</b> <i>checksum</i>
439 </blockquote>
440
441 The A card specifies a filename for the attachment in its first argument.
@@ -438,10 +448,14 @@
448 The C card is an optional comment describing what the attachment is about.
449 The C card is optional, but there can only be one.
450
451 A single D card is required to give the date and time when the attachment
452 was applied.
453
454 There may be zero or one N cards. The N card specifies the mimetype of the
455 comment text provided in the C card. If the N card is omitted, the C card
456 mimetype is taken to be text/plain.
457
458 A single U card gives the name of the user to added the attachment.
459 If an attachment is added anonymously, then the U card may be omitted.
460
461 The Z card is the usual checksum over the rest of the attachment artifact.
@@ -459,10 +473,11 @@
473
474 <blockquote>
475 <b>C</b> <i>comment</i><br>
476 <b>D</b> <i>time-and-date-stamp</i><br />
477 <b>E</b> <i>event-time</i> <i>event-id</i><br />
478 <b>N</b> <i>mimetype</i><br />
479 <b>P</b> <i>parent-artifact-id</i>+<br />
480 <b>T</b> <b>+</b><i>tag-name</i> <b>*</b> <i>value</i><br />
481 <b>U</b> <i>user-name</i><br />
482 <b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br />
483 <b>Z</b> <i>checksum</i>
@@ -478,10 +493,15 @@
493 A single E card gives the time of the event (the point on the timeline
494 where the event is displayed) and a unique identifier for the event.
495 When there are multiple artifacts with the same event-id, the one with
496 the most recent D card is the only one used. The event-id must be a
497 40-character lower-case hexadecimal string.
498
499 The optional N card specifies the mimetype of the text of the event
500 that is contained in the W card. If the N card is omitted, then the
501 W card text mimetype is assumed to be text/x-fossil, which is the
502 Fossil wiki format.
503
504 The option P card specifies a prior event with the same event-id from
505 which the current event is an edit. The P card is a hint to the system
506 that it might be space efficient to store one event as a delta of the
507 other.
@@ -628,10 +648,20 @@
648 <td align=center>&nbsp;</td>
649 <td align=center>&nbsp;</td>
650 <td align=center>&nbsp;</td>
651 <td align=center>&nbsp;</td>
652 </tr>
653 <tr>
654 <td><b>N</b> <i>mimetype</i></td>
655 <td align=center><b>X</b></td>
656 <td align=center>&nbsp;</td>
657 <td align=center>&nbsp;</td>
658 <td align=center><b>X</b></td>
659 <td align=center>&nbsp;</td>
660 <td align=center><b>X</b></td>
661 <td align=center><b>X</b></td>
662 </tr>
663 <tr>
664 <td><b>P</b> <i>uuid ...</i></td>
665 <td align=center><b>X</b></td>
666 <td align=center>&nbsp;</td>
667 <td align=center>&nbsp;</td>
668

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button