When fossil adds directories that contain symbolic links to other directories in a fossil repository, on future checkouts the symbolic link will become an entirely seperate copy of the entire directory structure that was pointed to on disk. See below explanatory logs for example / steps to reproduce.

Esp. look at the two outputs of "ls -l three/".

<verbatim>
$ fossil version
This is fossil version [37f295c310] 2009-09-21 19:19:20 UTC

$ fossil new tmp.fossil-scm
[...]

$ fossil open tmp.fossil-scm

$ mkdir -p one/two three

$ echo testing >

$ (cd three && ln -s

$ ls -l three/
total 0
lrwxrwxrwx 1 djbclark djbclark 10 2009-09-29 15:05 two ->

$ fossil add one three
ADDED
ADDED

$ fossil commit -m "test of unexpected behavior" --nosign
New_Version:

$ fossil close

$ rm -rf manifest manifest.uuid one three

$ ls
tmp.fossil-scm

$ fossil open tmp.fossil-scm


[...]

$ ls -l three/
total 4
drwxr-xr-x 2 djbclark djbclark 4096 2009-09-29 15:07 two
# above - now "magically" an actual seperate copy, not a symlink

$ grep txt.txt manifest
F
F
# above - at least I'm guessing this means it doesn't take up extra
# space in the repository, but stat shows they do take up extra
# space on disk (different inodes) , which sucks esp. for this
# project which needs to fit on a certain size of media...

$ stat
  File:
  Size: 8         	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 319977      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/djbclark)   Gid: ( 1000/djbclark)
Access: 2009-09-29 15:07:33.000000000 -0400
Modify: 2009-09-29 15:07:33.000000000 -0400
Change: 2009-09-29 15:07:33.000000000 -0400

$ stat
  File:
  Size: 8         	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 319980      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/djbclark)   Gid: ( 1000/djbclark)
Access: 2009-09-29 15:07:33.000000000 -0400
Modify: 2009-09-29 15:07:33.000000000 -0400
Change: 2009-09-29 15:07:33.000000000 -0400
</verbatim>

(Putting limiting symlinks] in ticket form.)