KiSS

Documentation
Login
# Home

<!-- KiSS is for Shell Scripts -->
<div style="font-size:larger; margin-top:12px; text-decoration:underline">
<b>K</b>iSS <b>i</b>s for <b>S</b>hell <b>S</b>scripts
</div>

<!-- Inline style sheet -->
<style>
h1 { margin-top:20px }
p { max-width:760px }
ol { max-width:760px; font-size:smaller; padding:0 20px }
</style>

<!-- ~/fossil/build/fossil-sebyte/www/embeddeddoc.wiki

Unfortunately, server-side text substitution of $ROOT with the baseurl
doesn't work with Markdown images, so the localhost baseurl must be
used to begin with:

 .----- baseurl -----..--- file path ---.
 http://localhost:8080/doc/ckout/bash.jpg

When ready, add an image as unversioned content, like so:

 fossil> uv add bash.jpg --as image/bash.jpg

(Optionally, visit the UV web interface at http://localhost:8080/uvlist
to check.)

To preview the image as unversioned content, the file path must now be
changed:

 .----- baseurl -----..--- file path --.
 http://localhost:8080/uv/image/bash.jpg

Finally, the localhost baseurl should be replaced with the short
public baseurl, in this case /kiss, before committing. -->

           ![Fossil SCM](/kiss/uv/image/fossil.gif)   ![GNU Bash](/kiss/uv/image/bash.jpg)   ![POSIX](/kiss/uv/image/posix.jpg)

<!-- Description -->
KiSS is a single [Fossil][] repository hosting multiple shell scripts.

# Repository structure

Project separation is achieved by organising the repository into
project _trees_, each with their own trunk<sup>1</sup>,
e.g. [mash][mash-tl], and release or development branches prefixed
with the name of the trunk to which they are attached, e.g. mash-hack.
The Fossil default branch [trunk][trunk-tl] is used for miscellaneous
files shared between projects, e.g. images, licenses and tools, plus
the [Markdown source][] for this page.

<ol><li>A branch beginning with an <em>orphaned</em> checkin/commit.
Having no ultimate parent, a trunk cannot easily be merged with any
other branch.</li></ol>

[Fossil]: https://fossil-scm.org "Fossil SCM home"
[Emacs]: https://www.gnu.org/software/emacs/ "GNU Emacs home"
[mash-tl]: /timeline?r=mash&v "Timeline"
[trunk-tl]: /timeline?r=trunk&v "Timeline"
[Markdown source]: /doc/trunk/home.md?mimetype=text/plain

# Projects

|                  Trunk   :|:   Name/description                                 |       Release   :|:   Other documentation formats

| [mash][] [🕟][mash-tl]   :|:   Use mash like make, but for everyday scripting   |    mash-0.1.0   :|:   HTML   PDF   Info   Text

<!-- Tree (files) -->
[mash]: /dir?ci=mash&type=tree "Files"
<!-- Tree (timeline) -->
[mash-tl]: /timeline?r=mash&v "Timeline"
<!-- Release tarball -->
[mash-0.1.0]: /uv/mash-0.1.0.tgz "Compressed tarball"
<!-- Documentation -->
[mash-h]: /doc/mash/doc/ "HTML manual (inline)"
[mash-s]: /doc/mash/doc/mash.html "HTML manual (standalone)"
[mash-p]: /doc/mash/doc/mash.pdf "PDF manual"
[mash-i]: /doc/mash/doc/mash.info "Info manual"
[mash-t]: /doc/mash/doc/mash.text?mimetype=text/plain "Plain text manual (inline)"

# Anonymous quick start (*nix)
```
$ mkdir --parents kiss/trunk
$ cd kiss
$ fossil clone https://software.sebyte.me/kiss kiss.fossil
[...]
$ cd trunk
$ fossil open ../kiss.fossil
[...]
$ tool/checkout-trunks.sh  # checkout each project under ../<project-trunk>/
[...]
$ cd .. && ls
kiss.fossil  mash  trunk
```