Ticket Change Details
Not logged in
Overview

Artifact ID: 3246c81734dc5f229bd4d8b27cadeaf2cf9e1d91
Ticket: aa494b5832ac1a1ee098d96278f08c0cb7e112b9
Fossil changes symlinks into seperate files
User & Date: anonymous 2009-10-01 12:52:07
Changes

  1. comment changed to:
    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 > one/two/txt.txt
    
    $ (cd three && ln -s ../one/two)
    
    $ ls -l three/
    total 0
    lrwxrwxrwx 1 djbclark djbclark 10 2009-09-29 15:05 two -> ../one/two
    
    $ fossil add one three
    ADDED  one/two/txt.txt
    ADDED  three/two/txt.txt
    
    $ fossil commit -m "test of unexpected behavior" --nosign
    New_Version: 160e9429f44953ea6f42902f62a706dd3838775c
    
    $ fossil close
    
    $ rm -rf manifest manifest.uuid one three
    
    $ ls
    tmp.fossil-scm
    
    $ fossil open tmp.fossil-scm
    one/two/txt.txt
    three/two/txt.txt
    [...]
    
    $ 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 one/two/txt.txt 9801739daae44ec5293d4e1f53d3f4d2d426d91c
    F three/two/txt.txt 9801739daae44ec5293d4e1f53d3f4d2d426d91c
    # 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 one/two/txt.txt
      File: `one/two/txt.txt'
      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 three/two/txt.txt
      File: `three/two/txt.txt'
      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 [http://thread.gmane.org/gmane.comp.version-control.fossil-scm.user/996/focus=1020|Re: limiting symlinks] in ticket form.)
    
  2. foundin changed to: "37f295c310"
  3. private_contact changed to: "ace2a438fb254e5d21ba2ed1295b2da8392d271c"
  4. severity changed to: "Severe"
  5. status changed to: "Open"
  6. title changed to: "Fossil changes symlinks into seperate files"
  7. type changed to: "Code_Defect"