Artifact 7ae960b153c84280c72de5ee172c1beb823f07b65ea00756a4a62f54bdec64f7:
- File
www/childprojects.wiki
— part of check-in
[54977e14]
at
2024-02-04 04:29:29
on branch inskinerator-modern-backport
— Replaced nearly all explicit uses of the "blockquote" tag in the
embedded docs:
- Constructs like "<blockquote><pre>" are now simply "<pre>"
- Ditto "<blockquote><b>" for command examples, which then allowed me to get rid of explicit "br" elements; pre does that for us.
- Where it was used merely to get an indent for a code block, we're now using pre or verbatim instead, depending on whether we need embedded HTML and/or pre-wrap handling. (Not the same thing as the prior item.) In some places, this let us replace use of HTML-escaped code blocks in pre with verbatim equivalents, not needing the escaping, allownig the doc source to read more like the rendered HTML.
- Use of blockquotes to get hierarchical indenting is no longer necessary; the skin does that. A good example is indenting ol and ul lists under the parent paragraph; additional manual indenting is no longer necessary.
The only remaining instances of "blockquote" under www/ are necessary:
- The copyright release doc is plain HTML, without the fossil-doc wrapper, giving it no access to the new skin improvements.
- One MD doc wants a blockquote in the middle of a list, and the current parsing rules don't let us use ">" there.
- The skinning docs talk about styling blockquote elements at one point; it isn't a use of the tag, it is a prose reference to it.
Child Projects
Background
The default behavior of Fossil is to share everything (all check-ins, tickets, wiki, etc) between all clients and all servers. Such a policy helps to promote a cohesive design for a cathedral-style project run by a small cliche of developers - the sort of project for which Fossil was designed.
But sometimes it is desirable to branch off a side project that does not sync back to the master but does continue to track changes in the master. For example, the master project might be an open-source project like SQLite and a team might want to do a proprietary closed-source enhancement to that master project in a separate repository. All changes in the master project should flow forward into the derived project, but care must be taken to prevent proprietary content from the derived project from leaking back into the master.
Child Projects
A scenario such as the above can be accomplished in Fossil by creating a child project. The child project is able to freely pull from the parent, but the parent cannot push or pull from the child nor is the child able to push to the parent. Content flows from parent to child only, and then only at the request of the child.
Creating a Child Project
To create a new child project, first clone the parent. Then make manual SQL changes to the child repository as follows:
UPDATE config SET name='parent-project-code' WHERE name='project-code'; UPDATE config SET name='parent-project-name' WHERE name='project-name'; INSERT INTO config(name,value) VALUES('project-code',lower(hex(randomblob(20)))); INSERT INTO config(name,value) VALUES('project-name','CHILD-PROJECT-NAME');
Modify the CHILD-PROJECT-NAME in the last statement to be the name of the child project, of course.
The repository is now a separate project, independent from its parent. Clone the new project to the developers as needed.
The child project and the parent project will not normally be able to sync with one another, since they are now separate projects with distinct project codes. However, if the "--from-parent-project" command-line option is provided to the "fossil pull" command in the child, and the URL of parent repository is also provided on the command-line, then updates to the parent project that occurred after the child was created will be added to the child repository. Thus, by periodically doing a pull --from-parent-project, the child project is able to stay up to date with all the latest changes in the parent.