git-annex/doc/bugs/submodule_path_problem.mdwn
Joey Hess 8fec62d299 A relative core.worktree is relative to the gitdir.
Now that this is handled correctly, git-annex can be used in git submodules.

Also, fixed infelicity where Git.CurrentRepo and Git.Config.updateLocation
were both dealing with core.worktree. Now updateLocation handles it for
Local as well as for LocalUnknown repos.
2012-10-16 00:08:39 -04:00

56 lines
1.5 KiB
Markdown

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]]