Fossil

Ticket Change Details
Login

Ticket Change Details

Overview

Artifact ID: 9b24ea7503e37c9f66c3f543dfd624371f189456
Ticket: 4ee4aa5a30733a53b7a8f09295778165dc6a1669
import does not work with file- or directorynames containing whitespace
User & Date: drh 2010-12-11 14:53:59
Changes

  1. comment changed to:
    The (awesome!) git import will not cope with file/directory names containing whitespace: for a file only the part before the first space will show. For a directory, a file with a name of the first part of the directory name before whitespace will be created and all files beneath the dir will not show up.
    
    Minimal test case:
    
    <verbatim>
    # init git repo
    
    $ mkdir gitrepo
    $ cd gitrepo/
    $ git init
    Initialized empty Git repository in /home/dgruber/tmp/gitrepo/.git/
    
    # add a file with name containing whitespace
    
    $ echo 1 > "file with whitespace.txt"
    $ git add file\ with\ whitespace.txt 
    $ git commit -m "add file"
    [master (root-commit) 1cc529c] add file
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 file with whitespace.txt
    
    # add a file in a dir with dirname containing whitespace
    
    $ mkdir "dir with whitespace"
    $ echo 2 > dir\ with\ whitespace/test.txt
    $ git add dir\ with\ whitespace/
    $ git commit -m "add file in dir with space"
    [master aa8b906] add file in dir with space
     1 files changed, 1 insertions(+), 0 deletions(-)
     create mode 100644 dir with space/test.txt
    
    # export to fossil
    
    $ ls -l
    total 8
    drwxr-xr-x 2 dgruber dgruber 4096 Dec 10 19:47 dir with space
    -rw-r--r-- 1 dgruber dgruber    2 Dec 10 19:24 file with whitespace.txt
    $ git fast-export --all | fossil import --git ../gitrepo.fossil
    Rebuilding repository meta-data...
      100.0% complete...
    Vacuuming... ok
    project-id: 7e7e2a90dcdeabeab0d308296aafad2c2affa22e
    server-id:  aba6f411ae5a0919194c1702d6463f679c9f35a9
    admin-user: dgruber (password is "0b315a")
    
    # open fossil repo
    
    $ cd ..
    $ mkdir fossilrepo
    $ cd fossilrepo/
    $ fossil open ../gitrepo.fossil 
    $ ls -l
    total 16
    -rw-r--r-- 1 dgruber dgruber    2 Dec 10 19:49 dir
    -rw-r--r-- 1 dgruber dgruber    2 Dec 10 19:49 file
    -rw-r--r-- 1 dgruber dgruber 7168 Dec 10 19:49 _FOSSIL_
    $ fossil timeline
    === 2010-12-10 ===
    19:47:58 [42ca8b1dbf] *CURRENT* add file in dir with space (user:
             dgruber@ed.ac.uk tags: master)
    19:24:21 [0f24c7282a] add file (user: dgruber@ed.ac.uk tags: master, trunk)
    </verbatim>
    
    This is on Debian squeeze i386, latest fossil [20b04536d0c9ab0932e719d2a2475dd22c1354d7] built form source.
    
    Cheers,
    Daniel
    
    <hr /><i>anonymous added on 2010-12-10 20:10:25:</i><br />
    Sorry, I forgot:
    
    <verbatim>
    $ git --version
    git version 1.7.2.3
    </verbatim>
    
    Cheers,
    Daniel
    
    <hr /><i>drh added on 2010-12-11 00:31:03:</i><br />
    If you ever copy or rename a git pathname contains a space, then the 
    git-fast-import transfer format will not be able to deal with that case.
    This is a limitation in the design of git-fast-import.
    
    But as long as you do not copy or rename files with spaces in their
    pathnames, git-fast-import and also Fossil should now be able to deal with it,
    at least as of check-in [4ee4aa5a30733a5].