summaryrefslogtreecommitdiff
path: root/doc/bugs/Incorrect_symlink_path_in_simple_submodule_use_case.mdwn
blob: 823d12679d35ed39100b242b407247b4017789da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
### Please describe the problem.
When creating a simple "parent" git repo, creating another "child" repo with an annexed file, then adding the child repo as a submodule of the parent, the symlink path of the large file contained by the submodule is incorrect.


### What steps will reproduce the problem?
Here are the exact steps for this simple use case (I have removed unrelated output for brevity, and setting up the repos is error-free):

    # Create "parent" repo
    $ mkdir parent
    $ cd parent/
    $ git init
    $ touch parent_start
    $ git add parent_start
    $ git commit -a -m 'New parent repo'
    $ cd ../
    
    # Create "child" repo
    $ mkdir child
    $ cd child/
    $ git init
    $ touch child_start
    $ git add child_start
    $ git commit -a -m 'New child repo'
    $ git annex init
    $ cp ~/Desktop/some_big_file child_big_file
    $ git annex add child_big_file
    $ git commit -a -m 'Added big file'
    $ cd ../
    
    # Add "child" repo as a submodule of "parent" repo
    $ cd parent/
    $ git submodule add ../child ./submodule
    $ git commit -m 'Added submodule'
    
    # Try to get annexed file
    $ cd submodule/
    $ git annex init
    $ git annex get
    $ ls ./
    -rw-r--r--	.git
    lrwxr-xr-x	child_big_file -> .git/annex/objects/F5/f2/SHA256E-s1117253--ce17632dfd9c61a0a8c1384d25fb3a8a197f8056f224e15fbcad89904a82c5fd/SHA256E-s1117253--ce17632dfd9c61a0a8c1384d25fb3a8a197f8056f224e15fbcad89904a82c5fd
    -rw-r--r--	child_start
    
    # As you can see above, the child_big_file symlink path is incorrect (the ".git/annex/..." location is not a directory, and should instead be "../.git/modules/submodule/annex/...")
    
    # Show the actual location of the annexed file
    $ cd ../
    $ ls .git/modules/submodule/annex/objects/F5/f2/SHA256E-s1117253--ce17632dfd9c61a0a8c1384d25fb3a8a197f8056f224e15fbcad89904a82c5fd
    -r--r--r--	SHA256E-s1117253--ce17632dfd9c61a0a8c1384d25fb3a8a197f8056f224e15fbcad89904a82c5fd


### What version of git-annex are you using? On what operating system?
Mac OS X Mountain Lion. git-annex files are from within the downloadable git-annex assistant.

    $ sw_vers -productVersion
    10.8.5
    $ git --version
    git version 1.7.12.4 (Apple Git-37)
    $ git-annex version
    git-annex version: 4.20131105-g136b030
    build flags: Assistant Webapp Pairing Testsuite S3 WebDAV FsEvents XMPP DNS Feeds Quvi TDFA
    key/value backends: SHA256E SHA1E SHA512E SHA224E SHA384E SHA256 SHA1 SHA512 SHA224 SHA384 WORM URL
    remote types: git gcrypt S3 bup directory rsync web webdav glacier hook
    local repository version: 3
    default repository version: 3
    supported repository versions: 3 4
    upgrade supported from repository versions: 0 1 2


Thanks for your help :)