Thread (6 messages) flat view 6 messages, 4 authors, 2016-06-15

Re: Fwd: Git Directory Diff for submodule

From: Jens Lehmann <hidden>
Date: 2016-06-15 22:59:58

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 [off-list ref]:
quoted
Am 07.02.2014 10:15, schrieb Gábor Lipták:
quoted
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

quoted
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 majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help