I want to handle vendor branches in a reasonable manner.
I'm trying to do the following: commit vendor version
into branch and merge the result onto trunk.

Initial steps:

<verbatim>
$ mkdir cd
$ fossil new bug
project-id:
server-id:
admin-user: asau (initial password is "ea9c71")
$ mkdir test; cd test; fossil open ../bug
$ fossil timeline
=== 2010-06-23 ===
06:42:52 [cef303f2f8] *CURRENT* initial empty check-in (user: asau tags: trunk)
</verbatim>

Let's try to import vendor version and merge it onto trunk:

<verbatim>
$ :> test
$ fossil add test
ADDED  test
$ fossil ci --branch vendor-version -m "Import vendor version."
New_Version:
$ fossil close
$ rm -f *
$ fossil open ../bug trunk
fossil: object [cef303f2f8] is not a check-in
</verbatim>

???

<verbatim>
$ fossil merge vendor-version
fossil: lack both primary and secondary files
</verbatim>

???

It doesn't work, somehow "initial check-in" is too special to be a "check-in".
Work around is to create another empty check-in:

<verbatim>
$ fossil ci -f -m "Commit empty changes to work around."
New_Version:
$ fossil timeline
=== 2010-06-23 ===
06:45:09 [43da68d6ed] *CURRENT* Commit empty changes to work around. (user:
         asau tags: trunk)
06:43:56 [3ae4f0043b] Import vendor version. (user: asau tags: vendor-version)
06:42:52 [cef303f2f8] *BRANCH* initial empty check-in (user: asau tags: trunk)
$ fossil merge vendor-version
ADDED test
$ fossil ci -m "Merge vendor version."
New_Version:
$ fossil close
</verbatim>

It would be nice not to require this workaround.