Fossil SCM
Proposed new design for the forum. Individual posts are stored as ordinary artifacts and thus participate in sync just like any other artifact. There is a new artifact type used to describe forum posts. This check-in defines the format of the new artifact type. Follow-up check-ins on this thread will attempt to flesh-out the idea in code.
Commit
15fa605318fc0e4e8a6de1b58500770e32a4ee6f7c8972439c974ccf4fb390a8
Parent
ac6657e2d35c974…
1 file changed
+119
-4
+119
-4
| --- www/fileformat.wiki | ||
| +++ www/fileformat.wiki | ||
| @@ -71,13 +71,14 @@ | ||
| 71 | 71 | <li> [#ctrl | Control Artifacts] </li> |
| 72 | 72 | <li> [#wikichng | Wiki Pages] </li> |
| 73 | 73 | <li> [#tktchng | Ticket Changes] </li> |
| 74 | 74 | <li> [#attachment | Attachments] </li> |
| 75 | 75 | <li> [#event | TechNotes] </li> |
| 76 | +<li> [#forum | Forum Posts] </li> | |
| 76 | 77 | </ul> |
| 77 | 78 | |
| 78 | -These seven structural artifact types are described in subsections below. | |
| 79 | +These eight structural artifact types are described in subsections below. | |
| 79 | 80 | |
| 80 | 81 | Structural artifacts are ASCII text. The artifact may be PGP clearsigned. |
| 81 | 82 | After removal of the PGP clearsign header and suffix (if any) a structural |
| 82 | 83 | artifact consists of one or more "cards" separated by a single newline |
| 83 | 84 | (ASCII: 0x0a) character. Each card begins with a single |
| @@ -525,10 +526,84 @@ | ||
| 525 | 526 | technote. The format of the W card is exactly the same as for a |
| 526 | 527 | [#wikichng | wiki artifact]. |
| 527 | 528 | |
| 528 | 529 | The Z card is the required checksum over the rest of the artifact. |
| 529 | 530 | |
| 531 | +<a name="forum"></a> | |
| 532 | +<h3>2.8 Forum Posts</h3> | |
| 533 | + | |
| 534 | +Forum posts are intended as a mechanism for users and developers to | |
| 535 | +discuss a project. Forum mosts are like messages on a mailing list. | |
| 536 | + | |
| 537 | +The following cards are allowed on an forum post artifact: | |
| 538 | + | |
| 539 | +<blockquote> | |
| 540 | +<b>D</b> <i>time-and-date-stamp</i><br /> | |
| 541 | +<b>G</b> <i>thread-root</i><br /> | |
| 542 | +<b>H</b> <i>thread-title</i><br /> | |
| 543 | +<b>I</b> <i>in-reply-to</i><br /> | |
| 544 | +<b>N</b> <i>mimetype</i><br /> | |
| 545 | +<b>P</b> <i>parent-artifact-id</i><br /> | |
| 546 | +<b>U</b> <i>user-name</i><br /> | |
| 547 | +<b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br /> | |
| 548 | +<b>Z</b> <i>checksum</i> | |
| 549 | +</blockquote> | |
| 550 | + | |
| 551 | +Every forum post must have either one I card and one G card | |
| 552 | +or one H card. | |
| 553 | +Forum posts are organized into topic threads. The initial | |
| 554 | +post for a thread (the root post) has an H card giving the title or | |
| 555 | +subject for that thread. The argument to the H card is a string | |
| 556 | +in the same format as a comment string in a C card. | |
| 557 | +All follow-up posts have an I card that | |
| 558 | +indicates which prior post in the same thread the current forum | |
| 559 | +post is replying to, and a G card specifying the root post for | |
| 560 | +the entire thread. The argument to G and I cards is the | |
| 561 | +artifact hash for the prior forum post to which the card refers. | |
| 562 | + | |
| 563 | +In theory, it is sufficient for follow-up posts to have only an | |
| 564 | +I card, since the G card value could be computed by following a | |
| 565 | +chain of I cards. However, the G card is required in order to | |
| 566 | +associate the artifact with a forum thread in the case where an | |
| 567 | +intermediate artifact in the I card chain is shunned or otherwise | |
| 568 | +becomes unreadable. | |
| 569 | + | |
| 570 | +A single D card is required to give the date and time when the | |
| 571 | +forum post was created. | |
| 572 | + | |
| 573 | +The optional N card specifies the mimetype of the text of the technote | |
| 574 | +that is contained in the W card. If the N card is omitted, then the | |
| 575 | +W card text mimetype is assumed to be text/x-fossil, which is the | |
| 576 | +Fossil wiki format. | |
| 577 | + | |
| 578 | +The optional P card specifies a prior forum post for which this | |
| 579 | +forum post is an edit. For display purposes, only the child post | |
| 580 | +is shown, thought the historical post is retained as a record. | |
| 581 | +If P cards are used and there exist multiple versions of the same | |
| 582 | +forum post, then I cards for other artifacts refer to whichever | |
| 583 | +version of the post was current at the time the reply was made, | |
| 584 | +but G cards refer to the initial, unedited root post for the thread. | |
| 585 | +Thus, following the chain of I cards back to the root of the thread | |
| 586 | +may land on a different post than the one given in the G card. | |
| 587 | +However, following the chain of I cards back to the thread root, | |
| 588 | +then following P cards back to the initial version of the thread | |
| 589 | +root must give the same artifact as is provided by the G card, | |
| 590 | +otherwise the artifact containing the G card is considered invalid | |
| 591 | +and should be ignored. | |
| 592 | + | |
| 593 | +In general, P cards may contain multiple arguments, indicating a | |
| 594 | +merge. But since forum posts cannot be merged, the | |
| 595 | +P card of a forum post may only contain a single argument. | |
| 596 | + | |
| 597 | +The U card gives name of the user who entered the forum post. | |
| 598 | + | |
| 599 | +A single W card provides wiki text for the forum post. | |
| 600 | +The format of the W card is exactly the same as for a | |
| 601 | +[#wikichng | wiki artifact]. | |
| 602 | + | |
| 603 | +The Z card is the required checksum over the rest of the artifact. | |
| 604 | + | |
| 530 | 605 | |
| 531 | 606 | <a name="summary"></a> |
| 532 | 607 | <h2>3.0 Card Summary</h2> |
| 533 | 608 | |
| 534 | 609 | The following table summarizes the various kinds of cards that appear |
| @@ -539,20 +614,21 @@ | ||
| 539 | 614 | or more such cards are required. |
| 540 | 615 | |
| 541 | 616 | <table border=1 width="100%"> |
| 542 | 617 | <tr> |
| 543 | 618 | <th rowspan=2 valign=bottom>Card Format</th> |
| 544 | -<th colspan=7>Used By</th> | |
| 619 | +<th colspan=8>Used By</th> | |
| 545 | 620 | </tr> |
| 546 | 621 | <tr> |
| 547 | 622 | <th>Manifest</th> |
| 548 | 623 | <th>Cluster</th> |
| 549 | 624 | <th>Control</th> |
| 550 | 625 | <th>Wiki</th> |
| 551 | 626 | <th>Ticket</th> |
| 552 | 627 | <th>Attachment</th> |
| 553 | 628 | <th>Technote</th> |
| 629 | +<th>Forum</th> | |
| 554 | 630 | </tr> |
| 555 | 631 | <tr> |
| 556 | 632 | <td><b>A</b> <i>filename</i> <i>target</i> ?<i>source</i>?</td> |
| 557 | 633 | <td> </td> |
| 558 | 634 | <td> </td> |
| @@ -559,36 +635,39 @@ | ||
| 559 | 635 | <td> </td> |
| 560 | 636 | <td> </td> |
| 561 | 637 | <td> </td> |
| 562 | 638 | <td align=center><b>1</b></td> |
| 563 | 639 | <td> </td> |
| 640 | +<td> </td> | |
| 564 | 641 | </tr> |
| 565 | 642 | <tr> |
| 566 | 643 | <td><b>B</b> <i>baseline</i></td> |
| 567 | -<td align=center><b>0-1*</b></td> | |
| 644 | +<td align=center><b>0-1</b></td> | |
| 645 | +<td> </td> | |
| 568 | 646 | <td> </td> |
| 569 | 647 | <td> </td> |
| 570 | 648 | <td> </td> |
| 571 | 649 | <td> </td> |
| 572 | 650 | <td> </td> |
| 573 | 651 | <td> </td> |
| 574 | 652 | </tr> |
| 575 | -<tr><td> </td><td colspan='7'>* = Required for delta manifests</td></tr> | |
| 576 | 653 | <tr> |
| 577 | 654 | <td><b>C</b> <i>comment-text</i></td> |
| 578 | 655 | <td align=center><b>1</b></td> |
| 579 | 656 | <td> </td> |
| 580 | 657 | <td> </td> |
| 581 | 658 | <td> </td> |
| 582 | 659 | <td> </td> |
| 583 | 660 | <td align=center><b>0-1</b></td> |
| 584 | 661 | <td align=center><b>0-1</b></td> |
| 662 | +<td> </td> | |
| 585 | 663 | </tr> |
| 586 | 664 | <tr> |
| 587 | 665 | <td><b>D</b> <i>date-time-stamp</i></td> |
| 588 | 666 | <td align=center><b>1</b></td> |
| 589 | 667 | <td> </td> |
| 668 | +<td align=center><b>1</b></td> | |
| 590 | 669 | <td align=center><b>1</b></td> |
| 591 | 670 | <td align=center><b>1</b></td> |
| 592 | 671 | <td align=center><b>1</b></td> |
| 593 | 672 | <td align=center><b>1</b></td> |
| 594 | 673 | <td align=center><b>1</b></td> |
| @@ -600,10 +679,11 @@ | ||
| 600 | 679 | <td> </td> |
| 601 | 680 | <td> </td> |
| 602 | 681 | <td> </td> |
| 603 | 682 | <td> </td> |
| 604 | 683 | <td align=center><b>1</b></td> |
| 684 | +<td> </td> | |
| 605 | 685 | </tr> |
| 606 | 686 | <tr> |
| 607 | 687 | <td><b>F</b> <i>filename</i> ?<i>uuid</i>? ?<i>permissions</i>? ?<i>oldname</i>?</td> |
| 608 | 688 | <td align=center><b>0+</b></td> |
| 609 | 689 | <td> </td> |
| @@ -610,18 +690,42 @@ | ||
| 610 | 690 | <td> </td> |
| 611 | 691 | <td> </td> |
| 612 | 692 | <td> </td> |
| 613 | 693 | <td> </td> |
| 614 | 694 | <td> </td> |
| 695 | +<td> </td> | |
| 696 | +</tr> | |
| 697 | +<tr> | |
| 698 | +<td><b>H</b> <i>thread-title</i></td> | |
| 699 | +<td> </td> | |
| 700 | +<td> </td> | |
| 701 | +<td> </td> | |
| 702 | +<td> </td> | |
| 703 | +<td> </td> | |
| 704 | +<td> </td> | |
| 705 | +<td> </td> | |
| 706 | +<td align=center><b>0-1</b></td> | |
| 707 | +</tr> | |
| 708 | +<tr> | |
| 709 | +<td><b>I</b> <i>in-reply-to</i></td> | |
| 710 | +<td> </td> | |
| 711 | +<td> </td> | |
| 712 | +<td> </td> | |
| 713 | +<td> </td> | |
| 714 | +<td> </td> | |
| 715 | +<td> </td> | |
| 716 | +<td> </td> | |
| 717 | +<td align=center><b>0-1</b></td> | |
| 615 | 718 | </tr> |
| 616 | 719 | <tr> |
| 617 | 720 | <td><b>J</b> <i>name</i> ?<i>value</i>?</td> |
| 618 | 721 | <td> </td> |
| 619 | 722 | <td> </td> |
| 620 | 723 | <td> </td> |
| 621 | 724 | <td> </td> |
| 622 | 725 | <td align=center><b>1+</b></td> |
| 726 | +<td> </td> | |
| 623 | 727 | <td> </td> |
| 624 | 728 | <td> </td> |
| 625 | 729 | </tr> |
| 626 | 730 | <tr> |
| 627 | 731 | <td><b>K</b> <i>ticket-uuid</i></td> |
| @@ -630,10 +734,11 @@ | ||
| 630 | 734 | <td> </td> |
| 631 | 735 | <td> </td> |
| 632 | 736 | <td align=center><b>1</b></td> |
| 633 | 737 | <td> </td> |
| 634 | 738 | <td> </td> |
| 739 | +<td> </td> | |
| 635 | 740 | </tr> |
| 636 | 741 | <tr> |
| 637 | 742 | <td><b>L</b> <i>wiki-title</i></td> |
| 638 | 743 | <td> </td> |
| 639 | 744 | <td> </td> |
| @@ -640,15 +745,17 @@ | ||
| 640 | 745 | <td> </td> |
| 641 | 746 | <td align=center><b>1</b></td> |
| 642 | 747 | <td> </td> |
| 643 | 748 | <td> </td> |
| 644 | 749 | <td> </td> |
| 750 | +<td> </td> | |
| 645 | 751 | </tr> |
| 646 | 752 | <tr> |
| 647 | 753 | <td><b>M</b> <i>uuid</i></td> |
| 648 | 754 | <td> </td> |
| 649 | 755 | <td align=center><b>1+</b></td> |
| 756 | +<td> </td> | |
| 650 | 757 | <td> </td> |
| 651 | 758 | <td> </td> |
| 652 | 759 | <td> </td> |
| 653 | 760 | <td> </td> |
| 654 | 761 | <td> </td> |
| @@ -660,10 +767,11 @@ | ||
| 660 | 767 | <td> </td> |
| 661 | 768 | <td align=center><b>0-1</b></td> |
| 662 | 769 | <td> </td> |
| 663 | 770 | <td align=center><b>0-1</b></td> |
| 664 | 771 | <td align=center><b>0-1</b></td> |
| 772 | +<td align=center><b>0-1</b></td> | |
| 665 | 773 | </tr> |
| 666 | 774 | <tr> |
| 667 | 775 | <td><b>P</b> <i>uuid ...</i></td> |
| 668 | 776 | <td align=center><b>0-1</b></td> |
| 669 | 777 | <td> </td> |
| @@ -670,14 +778,16 @@ | ||
| 670 | 778 | <td> </td> |
| 671 | 779 | <td align=center><b>0-1</b></td> |
| 672 | 780 | <td> </td> |
| 673 | 781 | <td> </td> |
| 674 | 782 | <td align=center><b>0-1</b></td> |
| 783 | +<td align=center><b>0-1</b></td> | |
| 675 | 784 | </tr> |
| 676 | 785 | <tr> |
| 677 | 786 | <td><b>Q</b> (<b>+</b>|<b>-</b>)<i>uuid</i> ?<i>uuid</i>?</td> |
| 678 | 787 | <td align=center><b>0+</b></td> |
| 788 | +<td> </td> | |
| 679 | 789 | <td> </td> |
| 680 | 790 | <td> </td> |
| 681 | 791 | <td> </td> |
| 682 | 792 | <td> </td> |
| 683 | 793 | <td> </td> |
| @@ -690,19 +800,21 @@ | ||
| 690 | 800 | <td> </td> |
| 691 | 801 | <td> </td> |
| 692 | 802 | <td> </td> |
| 693 | 803 | <td> </td> |
| 694 | 804 | <td> </td> |
| 805 | +<td> </td> | |
| 695 | 806 | <tr> |
| 696 | 807 | <td><b>T</b> (<b>+</b>|<b>*</b>|<b>-</b>)<i>tagname</i> <i>uuid</i> ?<i>value</i>?</td> |
| 697 | 808 | <td align=center><b>0+</b></td> |
| 698 | 809 | <td> </td> |
| 699 | 810 | <td align=center><b>1+</b></td> |
| 700 | 811 | <td> </td> |
| 701 | 812 | <td> </td> |
| 702 | 813 | <td> </td> |
| 703 | 814 | <td align=center><b>0+</b></td> |
| 815 | +<td> </td> | |
| 704 | 816 | </tr> |
| 705 | 817 | <tr> |
| 706 | 818 | <td><b>U</b> <i>username</i></td> |
| 707 | 819 | <td align=center><b>1</b></td> |
| 708 | 820 | <td> </td> |
| @@ -709,10 +821,11 @@ | ||
| 709 | 821 | <td align=center><b>1</b></td> |
| 710 | 822 | <td align=center><b>1</b></td> |
| 711 | 823 | <td align=center><b>1</b></td> |
| 712 | 824 | <td align=center><b>0-1</b></td> |
| 713 | 825 | <td align=center><b>0-1</b></td> |
| 826 | +<td align=center><b>1</b></td> | |
| 714 | 827 | </tr> |
| 715 | 828 | <tr> |
| 716 | 829 | <td><b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b></td> |
| 717 | 830 | <td> </td> |
| 718 | 831 | <td> </td> |
| @@ -719,13 +832,15 @@ | ||
| 719 | 832 | <td> </td> |
| 720 | 833 | <td align=center><b>1</b></td> |
| 721 | 834 | <td> </td> |
| 722 | 835 | <td> </td> |
| 723 | 836 | <td align=center><b>1</b></td> |
| 837 | +<td align=center><b>1</b></td> | |
| 724 | 838 | </tr> |
| 725 | 839 | <tr> |
| 726 | 840 | <td><b>Z</b> <i>md5sum</i></td> |
| 841 | +<td align=center><b>1</b></td> | |
| 727 | 842 | <td align=center><b>1</b></td> |
| 728 | 843 | <td align=center><b>1</b></td> |
| 729 | 844 | <td align=center><b>1</b></td> |
| 730 | 845 | <td align=center><b>1</b></td> |
| 731 | 846 | <td align=center><b>1</b></td> |
| 732 | 847 |
| --- www/fileformat.wiki | |
| +++ www/fileformat.wiki | |
| @@ -71,13 +71,14 @@ | |
| 71 | <li> [#ctrl | Control Artifacts] </li> |
| 72 | <li> [#wikichng | Wiki Pages] </li> |
| 73 | <li> [#tktchng | Ticket Changes] </li> |
| 74 | <li> [#attachment | Attachments] </li> |
| 75 | <li> [#event | TechNotes] </li> |
| 76 | </ul> |
| 77 | |
| 78 | These seven structural artifact types are described in subsections below. |
| 79 | |
| 80 | Structural artifacts are ASCII text. The artifact may be PGP clearsigned. |
| 81 | After removal of the PGP clearsign header and suffix (if any) a structural |
| 82 | artifact consists of one or more "cards" separated by a single newline |
| 83 | (ASCII: 0x0a) character. Each card begins with a single |
| @@ -525,10 +526,84 @@ | |
| 525 | technote. The format of the W card is exactly the same as for a |
| 526 | [#wikichng | wiki artifact]. |
| 527 | |
| 528 | The Z card is the required checksum over the rest of the artifact. |
| 529 | |
| 530 | |
| 531 | <a name="summary"></a> |
| 532 | <h2>3.0 Card Summary</h2> |
| 533 | |
| 534 | The following table summarizes the various kinds of cards that appear |
| @@ -539,20 +614,21 @@ | |
| 539 | or more such cards are required. |
| 540 | |
| 541 | <table border=1 width="100%"> |
| 542 | <tr> |
| 543 | <th rowspan=2 valign=bottom>Card Format</th> |
| 544 | <th colspan=7>Used By</th> |
| 545 | </tr> |
| 546 | <tr> |
| 547 | <th>Manifest</th> |
| 548 | <th>Cluster</th> |
| 549 | <th>Control</th> |
| 550 | <th>Wiki</th> |
| 551 | <th>Ticket</th> |
| 552 | <th>Attachment</th> |
| 553 | <th>Technote</th> |
| 554 | </tr> |
| 555 | <tr> |
| 556 | <td><b>A</b> <i>filename</i> <i>target</i> ?<i>source</i>?</td> |
| 557 | <td> </td> |
| 558 | <td> </td> |
| @@ -559,36 +635,39 @@ | |
| 559 | <td> </td> |
| 560 | <td> </td> |
| 561 | <td> </td> |
| 562 | <td align=center><b>1</b></td> |
| 563 | <td> </td> |
| 564 | </tr> |
| 565 | <tr> |
| 566 | <td><b>B</b> <i>baseline</i></td> |
| 567 | <td align=center><b>0-1*</b></td> |
| 568 | <td> </td> |
| 569 | <td> </td> |
| 570 | <td> </td> |
| 571 | <td> </td> |
| 572 | <td> </td> |
| 573 | <td> </td> |
| 574 | </tr> |
| 575 | <tr><td> </td><td colspan='7'>* = Required for delta manifests</td></tr> |
| 576 | <tr> |
| 577 | <td><b>C</b> <i>comment-text</i></td> |
| 578 | <td align=center><b>1</b></td> |
| 579 | <td> </td> |
| 580 | <td> </td> |
| 581 | <td> </td> |
| 582 | <td> </td> |
| 583 | <td align=center><b>0-1</b></td> |
| 584 | <td align=center><b>0-1</b></td> |
| 585 | </tr> |
| 586 | <tr> |
| 587 | <td><b>D</b> <i>date-time-stamp</i></td> |
| 588 | <td align=center><b>1</b></td> |
| 589 | <td> </td> |
| 590 | <td align=center><b>1</b></td> |
| 591 | <td align=center><b>1</b></td> |
| 592 | <td align=center><b>1</b></td> |
| 593 | <td align=center><b>1</b></td> |
| 594 | <td align=center><b>1</b></td> |
| @@ -600,10 +679,11 @@ | |
| 600 | <td> </td> |
| 601 | <td> </td> |
| 602 | <td> </td> |
| 603 | <td> </td> |
| 604 | <td align=center><b>1</b></td> |
| 605 | </tr> |
| 606 | <tr> |
| 607 | <td><b>F</b> <i>filename</i> ?<i>uuid</i>? ?<i>permissions</i>? ?<i>oldname</i>?</td> |
| 608 | <td align=center><b>0+</b></td> |
| 609 | <td> </td> |
| @@ -610,18 +690,42 @@ | |
| 610 | <td> </td> |
| 611 | <td> </td> |
| 612 | <td> </td> |
| 613 | <td> </td> |
| 614 | <td> </td> |
| 615 | </tr> |
| 616 | <tr> |
| 617 | <td><b>J</b> <i>name</i> ?<i>value</i>?</td> |
| 618 | <td> </td> |
| 619 | <td> </td> |
| 620 | <td> </td> |
| 621 | <td> </td> |
| 622 | <td align=center><b>1+</b></td> |
| 623 | <td> </td> |
| 624 | <td> </td> |
| 625 | </tr> |
| 626 | <tr> |
| 627 | <td><b>K</b> <i>ticket-uuid</i></td> |
| @@ -630,10 +734,11 @@ | |
| 630 | <td> </td> |
| 631 | <td> </td> |
| 632 | <td align=center><b>1</b></td> |
| 633 | <td> </td> |
| 634 | <td> </td> |
| 635 | </tr> |
| 636 | <tr> |
| 637 | <td><b>L</b> <i>wiki-title</i></td> |
| 638 | <td> </td> |
| 639 | <td> </td> |
| @@ -640,15 +745,17 @@ | |
| 640 | <td> </td> |
| 641 | <td align=center><b>1</b></td> |
| 642 | <td> </td> |
| 643 | <td> </td> |
| 644 | <td> </td> |
| 645 | </tr> |
| 646 | <tr> |
| 647 | <td><b>M</b> <i>uuid</i></td> |
| 648 | <td> </td> |
| 649 | <td align=center><b>1+</b></td> |
| 650 | <td> </td> |
| 651 | <td> </td> |
| 652 | <td> </td> |
| 653 | <td> </td> |
| 654 | <td> </td> |
| @@ -660,10 +767,11 @@ | |
| 660 | <td> </td> |
| 661 | <td align=center><b>0-1</b></td> |
| 662 | <td> </td> |
| 663 | <td align=center><b>0-1</b></td> |
| 664 | <td align=center><b>0-1</b></td> |
| 665 | </tr> |
| 666 | <tr> |
| 667 | <td><b>P</b> <i>uuid ...</i></td> |
| 668 | <td align=center><b>0-1</b></td> |
| 669 | <td> </td> |
| @@ -670,14 +778,16 @@ | |
| 670 | <td> </td> |
| 671 | <td align=center><b>0-1</b></td> |
| 672 | <td> </td> |
| 673 | <td> </td> |
| 674 | <td align=center><b>0-1</b></td> |
| 675 | </tr> |
| 676 | <tr> |
| 677 | <td><b>Q</b> (<b>+</b>|<b>-</b>)<i>uuid</i> ?<i>uuid</i>?</td> |
| 678 | <td align=center><b>0+</b></td> |
| 679 | <td> </td> |
| 680 | <td> </td> |
| 681 | <td> </td> |
| 682 | <td> </td> |
| 683 | <td> </td> |
| @@ -690,19 +800,21 @@ | |
| 690 | <td> </td> |
| 691 | <td> </td> |
| 692 | <td> </td> |
| 693 | <td> </td> |
| 694 | <td> </td> |
| 695 | <tr> |
| 696 | <td><b>T</b> (<b>+</b>|<b>*</b>|<b>-</b>)<i>tagname</i> <i>uuid</i> ?<i>value</i>?</td> |
| 697 | <td align=center><b>0+</b></td> |
| 698 | <td> </td> |
| 699 | <td align=center><b>1+</b></td> |
| 700 | <td> </td> |
| 701 | <td> </td> |
| 702 | <td> </td> |
| 703 | <td align=center><b>0+</b></td> |
| 704 | </tr> |
| 705 | <tr> |
| 706 | <td><b>U</b> <i>username</i></td> |
| 707 | <td align=center><b>1</b></td> |
| 708 | <td> </td> |
| @@ -709,10 +821,11 @@ | |
| 709 | <td align=center><b>1</b></td> |
| 710 | <td align=center><b>1</b></td> |
| 711 | <td align=center><b>1</b></td> |
| 712 | <td align=center><b>0-1</b></td> |
| 713 | <td align=center><b>0-1</b></td> |
| 714 | </tr> |
| 715 | <tr> |
| 716 | <td><b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b></td> |
| 717 | <td> </td> |
| 718 | <td> </td> |
| @@ -719,13 +832,15 @@ | |
| 719 | <td> </td> |
| 720 | <td align=center><b>1</b></td> |
| 721 | <td> </td> |
| 722 | <td> </td> |
| 723 | <td align=center><b>1</b></td> |
| 724 | </tr> |
| 725 | <tr> |
| 726 | <td><b>Z</b> <i>md5sum</i></td> |
| 727 | <td align=center><b>1</b></td> |
| 728 | <td align=center><b>1</b></td> |
| 729 | <td align=center><b>1</b></td> |
| 730 | <td align=center><b>1</b></td> |
| 731 | <td align=center><b>1</b></td> |
| 732 |
| --- www/fileformat.wiki | |
| +++ www/fileformat.wiki | |
| @@ -71,13 +71,14 @@ | |
| 71 | <li> [#ctrl | Control Artifacts] </li> |
| 72 | <li> [#wikichng | Wiki Pages] </li> |
| 73 | <li> [#tktchng | Ticket Changes] </li> |
| 74 | <li> [#attachment | Attachments] </li> |
| 75 | <li> [#event | TechNotes] </li> |
| 76 | <li> [#forum | Forum Posts] </li> |
| 77 | </ul> |
| 78 | |
| 79 | These eight structural artifact types are described in subsections below. |
| 80 | |
| 81 | Structural artifacts are ASCII text. The artifact may be PGP clearsigned. |
| 82 | After removal of the PGP clearsign header and suffix (if any) a structural |
| 83 | artifact consists of one or more "cards" separated by a single newline |
| 84 | (ASCII: 0x0a) character. Each card begins with a single |
| @@ -525,10 +526,84 @@ | |
| 526 | technote. The format of the W card is exactly the same as for a |
| 527 | [#wikichng | wiki artifact]. |
| 528 | |
| 529 | The Z card is the required checksum over the rest of the artifact. |
| 530 | |
| 531 | <a name="forum"></a> |
| 532 | <h3>2.8 Forum Posts</h3> |
| 533 | |
| 534 | Forum posts are intended as a mechanism for users and developers to |
| 535 | discuss a project. Forum mosts are like messages on a mailing list. |
| 536 | |
| 537 | The following cards are allowed on an forum post artifact: |
| 538 | |
| 539 | <blockquote> |
| 540 | <b>D</b> <i>time-and-date-stamp</i><br /> |
| 541 | <b>G</b> <i>thread-root</i><br /> |
| 542 | <b>H</b> <i>thread-title</i><br /> |
| 543 | <b>I</b> <i>in-reply-to</i><br /> |
| 544 | <b>N</b> <i>mimetype</i><br /> |
| 545 | <b>P</b> <i>parent-artifact-id</i><br /> |
| 546 | <b>U</b> <i>user-name</i><br /> |
| 547 | <b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b><br /> |
| 548 | <b>Z</b> <i>checksum</i> |
| 549 | </blockquote> |
| 550 | |
| 551 | Every forum post must have either one I card and one G card |
| 552 | or one H card. |
| 553 | Forum posts are organized into topic threads. The initial |
| 554 | post for a thread (the root post) has an H card giving the title or |
| 555 | subject for that thread. The argument to the H card is a string |
| 556 | in the same format as a comment string in a C card. |
| 557 | All follow-up posts have an I card that |
| 558 | indicates which prior post in the same thread the current forum |
| 559 | post is replying to, and a G card specifying the root post for |
| 560 | the entire thread. The argument to G and I cards is the |
| 561 | artifact hash for the prior forum post to which the card refers. |
| 562 | |
| 563 | In theory, it is sufficient for follow-up posts to have only an |
| 564 | I card, since the G card value could be computed by following a |
| 565 | chain of I cards. However, the G card is required in order to |
| 566 | associate the artifact with a forum thread in the case where an |
| 567 | intermediate artifact in the I card chain is shunned or otherwise |
| 568 | becomes unreadable. |
| 569 | |
| 570 | A single D card is required to give the date and time when the |
| 571 | forum post was created. |
| 572 | |
| 573 | The optional N card specifies the mimetype of the text of the technote |
| 574 | that is contained in the W card. If the N card is omitted, then the |
| 575 | W card text mimetype is assumed to be text/x-fossil, which is the |
| 576 | Fossil wiki format. |
| 577 | |
| 578 | The optional P card specifies a prior forum post for which this |
| 579 | forum post is an edit. For display purposes, only the child post |
| 580 | is shown, thought the historical post is retained as a record. |
| 581 | If P cards are used and there exist multiple versions of the same |
| 582 | forum post, then I cards for other artifacts refer to whichever |
| 583 | version of the post was current at the time the reply was made, |
| 584 | but G cards refer to the initial, unedited root post for the thread. |
| 585 | Thus, following the chain of I cards back to the root of the thread |
| 586 | may land on a different post than the one given in the G card. |
| 587 | However, following the chain of I cards back to the thread root, |
| 588 | then following P cards back to the initial version of the thread |
| 589 | root must give the same artifact as is provided by the G card, |
| 590 | otherwise the artifact containing the G card is considered invalid |
| 591 | and should be ignored. |
| 592 | |
| 593 | In general, P cards may contain multiple arguments, indicating a |
| 594 | merge. But since forum posts cannot be merged, the |
| 595 | P card of a forum post may only contain a single argument. |
| 596 | |
| 597 | The U card gives name of the user who entered the forum post. |
| 598 | |
| 599 | A single W card provides wiki text for the forum post. |
| 600 | The format of the W card is exactly the same as for a |
| 601 | [#wikichng | wiki artifact]. |
| 602 | |
| 603 | The Z card is the required checksum over the rest of the artifact. |
| 604 | |
| 605 | |
| 606 | <a name="summary"></a> |
| 607 | <h2>3.0 Card Summary</h2> |
| 608 | |
| 609 | The following table summarizes the various kinds of cards that appear |
| @@ -539,20 +614,21 @@ | |
| 614 | or more such cards are required. |
| 615 | |
| 616 | <table border=1 width="100%"> |
| 617 | <tr> |
| 618 | <th rowspan=2 valign=bottom>Card Format</th> |
| 619 | <th colspan=8>Used By</th> |
| 620 | </tr> |
| 621 | <tr> |
| 622 | <th>Manifest</th> |
| 623 | <th>Cluster</th> |
| 624 | <th>Control</th> |
| 625 | <th>Wiki</th> |
| 626 | <th>Ticket</th> |
| 627 | <th>Attachment</th> |
| 628 | <th>Technote</th> |
| 629 | <th>Forum</th> |
| 630 | </tr> |
| 631 | <tr> |
| 632 | <td><b>A</b> <i>filename</i> <i>target</i> ?<i>source</i>?</td> |
| 633 | <td> </td> |
| 634 | <td> </td> |
| @@ -559,36 +635,39 @@ | |
| 635 | <td> </td> |
| 636 | <td> </td> |
| 637 | <td> </td> |
| 638 | <td align=center><b>1</b></td> |
| 639 | <td> </td> |
| 640 | <td> </td> |
| 641 | </tr> |
| 642 | <tr> |
| 643 | <td><b>B</b> <i>baseline</i></td> |
| 644 | <td align=center><b>0-1</b></td> |
| 645 | <td> </td> |
| 646 | <td> </td> |
| 647 | <td> </td> |
| 648 | <td> </td> |
| 649 | <td> </td> |
| 650 | <td> </td> |
| 651 | <td> </td> |
| 652 | </tr> |
| 653 | <tr> |
| 654 | <td><b>C</b> <i>comment-text</i></td> |
| 655 | <td align=center><b>1</b></td> |
| 656 | <td> </td> |
| 657 | <td> </td> |
| 658 | <td> </td> |
| 659 | <td> </td> |
| 660 | <td align=center><b>0-1</b></td> |
| 661 | <td align=center><b>0-1</b></td> |
| 662 | <td> </td> |
| 663 | </tr> |
| 664 | <tr> |
| 665 | <td><b>D</b> <i>date-time-stamp</i></td> |
| 666 | <td align=center><b>1</b></td> |
| 667 | <td> </td> |
| 668 | <td align=center><b>1</b></td> |
| 669 | <td align=center><b>1</b></td> |
| 670 | <td align=center><b>1</b></td> |
| 671 | <td align=center><b>1</b></td> |
| 672 | <td align=center><b>1</b></td> |
| 673 | <td align=center><b>1</b></td> |
| @@ -600,10 +679,11 @@ | |
| 679 | <td> </td> |
| 680 | <td> </td> |
| 681 | <td> </td> |
| 682 | <td> </td> |
| 683 | <td align=center><b>1</b></td> |
| 684 | <td> </td> |
| 685 | </tr> |
| 686 | <tr> |
| 687 | <td><b>F</b> <i>filename</i> ?<i>uuid</i>? ?<i>permissions</i>? ?<i>oldname</i>?</td> |
| 688 | <td align=center><b>0+</b></td> |
| 689 | <td> </td> |
| @@ -610,18 +690,42 @@ | |
| 690 | <td> </td> |
| 691 | <td> </td> |
| 692 | <td> </td> |
| 693 | <td> </td> |
| 694 | <td> </td> |
| 695 | <td> </td> |
| 696 | </tr> |
| 697 | <tr> |
| 698 | <td><b>H</b> <i>thread-title</i></td> |
| 699 | <td> </td> |
| 700 | <td> </td> |
| 701 | <td> </td> |
| 702 | <td> </td> |
| 703 | <td> </td> |
| 704 | <td> </td> |
| 705 | <td> </td> |
| 706 | <td align=center><b>0-1</b></td> |
| 707 | </tr> |
| 708 | <tr> |
| 709 | <td><b>I</b> <i>in-reply-to</i></td> |
| 710 | <td> </td> |
| 711 | <td> </td> |
| 712 | <td> </td> |
| 713 | <td> </td> |
| 714 | <td> </td> |
| 715 | <td> </td> |
| 716 | <td> </td> |
| 717 | <td align=center><b>0-1</b></td> |
| 718 | </tr> |
| 719 | <tr> |
| 720 | <td><b>J</b> <i>name</i> ?<i>value</i>?</td> |
| 721 | <td> </td> |
| 722 | <td> </td> |
| 723 | <td> </td> |
| 724 | <td> </td> |
| 725 | <td align=center><b>1+</b></td> |
| 726 | <td> </td> |
| 727 | <td> </td> |
| 728 | <td> </td> |
| 729 | </tr> |
| 730 | <tr> |
| 731 | <td><b>K</b> <i>ticket-uuid</i></td> |
| @@ -630,10 +734,11 @@ | |
| 734 | <td> </td> |
| 735 | <td> </td> |
| 736 | <td align=center><b>1</b></td> |
| 737 | <td> </td> |
| 738 | <td> </td> |
| 739 | <td> </td> |
| 740 | </tr> |
| 741 | <tr> |
| 742 | <td><b>L</b> <i>wiki-title</i></td> |
| 743 | <td> </td> |
| 744 | <td> </td> |
| @@ -640,15 +745,17 @@ | |
| 745 | <td> </td> |
| 746 | <td align=center><b>1</b></td> |
| 747 | <td> </td> |
| 748 | <td> </td> |
| 749 | <td> </td> |
| 750 | <td> </td> |
| 751 | </tr> |
| 752 | <tr> |
| 753 | <td><b>M</b> <i>uuid</i></td> |
| 754 | <td> </td> |
| 755 | <td align=center><b>1+</b></td> |
| 756 | <td> </td> |
| 757 | <td> </td> |
| 758 | <td> </td> |
| 759 | <td> </td> |
| 760 | <td> </td> |
| 761 | <td> </td> |
| @@ -660,10 +767,11 @@ | |
| 767 | <td> </td> |
| 768 | <td align=center><b>0-1</b></td> |
| 769 | <td> </td> |
| 770 | <td align=center><b>0-1</b></td> |
| 771 | <td align=center><b>0-1</b></td> |
| 772 | <td align=center><b>0-1</b></td> |
| 773 | </tr> |
| 774 | <tr> |
| 775 | <td><b>P</b> <i>uuid ...</i></td> |
| 776 | <td align=center><b>0-1</b></td> |
| 777 | <td> </td> |
| @@ -670,14 +778,16 @@ | |
| 778 | <td> </td> |
| 779 | <td align=center><b>0-1</b></td> |
| 780 | <td> </td> |
| 781 | <td> </td> |
| 782 | <td align=center><b>0-1</b></td> |
| 783 | <td align=center><b>0-1</b></td> |
| 784 | </tr> |
| 785 | <tr> |
| 786 | <td><b>Q</b> (<b>+</b>|<b>-</b>)<i>uuid</i> ?<i>uuid</i>?</td> |
| 787 | <td align=center><b>0+</b></td> |
| 788 | <td> </td> |
| 789 | <td> </td> |
| 790 | <td> </td> |
| 791 | <td> </td> |
| 792 | <td> </td> |
| 793 | <td> </td> |
| @@ -690,19 +800,21 @@ | |
| 800 | <td> </td> |
| 801 | <td> </td> |
| 802 | <td> </td> |
| 803 | <td> </td> |
| 804 | <td> </td> |
| 805 | <td> </td> |
| 806 | <tr> |
| 807 | <td><b>T</b> (<b>+</b>|<b>*</b>|<b>-</b>)<i>tagname</i> <i>uuid</i> ?<i>value</i>?</td> |
| 808 | <td align=center><b>0+</b></td> |
| 809 | <td> </td> |
| 810 | <td align=center><b>1+</b></td> |
| 811 | <td> </td> |
| 812 | <td> </td> |
| 813 | <td> </td> |
| 814 | <td align=center><b>0+</b></td> |
| 815 | <td> </td> |
| 816 | </tr> |
| 817 | <tr> |
| 818 | <td><b>U</b> <i>username</i></td> |
| 819 | <td align=center><b>1</b></td> |
| 820 | <td> </td> |
| @@ -709,10 +821,11 @@ | |
| 821 | <td align=center><b>1</b></td> |
| 822 | <td align=center><b>1</b></td> |
| 823 | <td align=center><b>1</b></td> |
| 824 | <td align=center><b>0-1</b></td> |
| 825 | <td align=center><b>0-1</b></td> |
| 826 | <td align=center><b>1</b></td> |
| 827 | </tr> |
| 828 | <tr> |
| 829 | <td><b>W</b> <i>size</i> <b>\n</b> <i>text</i> <b>\n</b></td> |
| 830 | <td> </td> |
| 831 | <td> </td> |
| @@ -719,13 +832,15 @@ | |
| 832 | <td> </td> |
| 833 | <td align=center><b>1</b></td> |
| 834 | <td> </td> |
| 835 | <td> </td> |
| 836 | <td align=center><b>1</b></td> |
| 837 | <td align=center><b>1</b></td> |
| 838 | </tr> |
| 839 | <tr> |
| 840 | <td><b>Z</b> <i>md5sum</i></td> |
| 841 | <td align=center><b>1</b></td> |
| 842 | <td align=center><b>1</b></td> |
| 843 | <td align=center><b>1</b></td> |
| 844 | <td align=center><b>1</b></td> |
| 845 | <td align=center><b>1</b></td> |
| 846 | <td align=center><b>1</b></td> |
| 847 |