summaryrefslogtreecommitdiff
path: root/doc/bugs/submodule_path_problem.mdwn
blob: 664e246bc62113cd87b1d341fc128fff68cce718 (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
If a submodule isn't toplevel, git-annex breaks

**What steps will reproduce the problem?**

Make two non-empty repositories:

    mkdir submod
    cd submod
    git init
    touch README && git add README
    git commit -a -m "first import of submodule"
    cd ..

    mkdir test
    cd test
    git init
    touch README && git add README
    git commit -a -m "first import of master"

Add first repository as a non-toplevel submodule:

    git submodule add ../submod lib/submod
    
Setup git-annex for the submodule inside the other repository:

    cd lib/submod
    git annex init

**What is the expected output? What do you see instead?**

Expected:

    init  ok
    (Recording state in git...)

Got:

    init  fatal: Could not switch to '../../../../lib': No such file or directory
    git-annex: git config [Param "annex.uuid",Param "55D974D1-73E8-489E-B454-03D164664C82"] failed


**What version of git-annex are you using? On what operating system?**

3.20121011 compiled from git on Mac OS X 10.8


**Please provide any additional information below.**

* git-annex read the path from the "worktree" variable in the git config.
* The git config for a submodule is storen in the main repository, e.g. "../../.git/modules/lib/submod/config"
* The path in that config is relative to the config file: "worktree = ../../../../lib/submod"
* Git-annex expect the path to be relative to the current directory, which is why it fails.

> Impressive analysis, thanks. I've fixed handling of relative
> core.worktree. [[done]] --[[Joey]]