Sorry for the late reply, but here we go ... Am 10.02.2014 07:33, schrieb Gábor Lipták: > Hi Jens, > > So "git status" says: > > liptak@liptak-kubuntu:~/Projects/MAIN_MODULE/platform/SUBMODULE > [master]$ git status > # On branch master > # Your branch is up-to-date with 'origin/master'. > # > # Changes not staged for commit: > # (use "git add <file>..." to update what will be committed) > # (use "git checkout -- <file>..." to discard changes in working > directory) > # > # modified: xxxxxx.java > # modified: xxxxxxx.java > # ... > # ... > # ... > # ... > # ... > # > no changes added to commit (use "git add" and/or "git commit -a") > > git config core.worktree gives back: "../../../../platform/SUBMODULE"
Which looks a bit strange but is perfectly ok for a repository that uses a gitfile, as the core.worktree setting is relative to the git directory the gitfile references and not the directory the gitfile lives in. A quick glance at the find_worktree subroutine in git-difftool.perl makes me think that difftool is not aware of that fact. David, does that make sense? > The submodule was inited simply with "git submodule init" + > "git.submodule update" > > MAINMODULE/.gitsubmodules file contains similar entry: > [submodule "platform/SUBMODULE"] > path = platform/SUBMODULE > url = ssh://git@somehost/foo/bar.git > > MAINMODULE/.git/config: > [submodule "platform/SUBMODULE"] > url = ssh://git@somehost/foo/bar.git > > MAINMODULE/platform/SUBMODULE/.git: > gitdir: ../../.git/modules/platform/SUBMODULE > > MAINMODULE/.git/modules/platform/SUBMODULE/config: > [core] > repositoryformatversion = 0 > filemode = true > bare = false > logallrefupdates = true > worktree = ../../../../platform/SUBMODULE > [remote "origin"] > url = ssh://git@somehost/foo/bar.git > fetch = +refs/heads/*:refs/remotes/origin/* > > So for me it seems that somehow the relative path inside > MAINMODULE/.git/modules/platform/SUBMODULE/config gets configuread > wrong during submodule init+update. > > I tried to update the > MAINMODULE/.git/modules/platform/SUBMODULE/config to contain > ../../platform/SUBMODULE as worktree path, then meld was correctly > started, but the compare tree was not usable. For file changes it > displayed always: XXXXX.java: Dangling symlink. So this is still not a > complete solution somehow. > > Regards, > > Gábor Lipták > > 2014-02-07 Jens Lehmann <jens.lehm...@web.de>: >> Am 07.02.2014 10:15, schrieb Gábor Lipták: >>> I think I have found a bug related to submodules and directory diff. >>> See the details at hXXp://stackoverflow.com/q/21623155/337621. >> >> Let's inline the recipe one finds after decrypting this link: >> >> ~/Projects/MAINMODULE/platform/SUBMODULE [master]$ git difftool -tool=meld >> --dir-diff --cached >> fatal: Could not switch to '../../../../platform/': No such file or >> directory >> diff --raw --no-abbrev -z --cached: command returned error: 128 >> ~/Projects/MAINMODULE/platform/SUBMODULE [master]$ cd .. >> ~/Projects/MAINMODULE/platform [master]$ cd .. >> ~/Projects/MAINMODULE [master]$ git difftool -tool=meld --dir-diff --cached >> // NO PROBLEM, works. >> ~/Projects/MAINMODULE [master]$ git version >> git version 1.8.4 >> >> >>> If you need any further details, just ask. >> >> - Does this only happen when you use difftool? E.g. what does >> "git status" inside the submodule say? >> >> - What does "git config core.worktree" print when run in the >> submodule? > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html