difftool: support repositories with .git-files
authorDavid Aguilar <davvid@gmail.com>
Mon, 24 Feb 2014 03:12:35 +0000 (19:12 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 24 Feb 2014 17:53:57 +0000 (09:53 -0800)
Modern versions of "git submodule" use .git-files to setup the
submodule directory. When run in a "git submodule"-created
repository "git difftool --dir-diff" dies with the following
error:

$ git difftool -d HEAD~
fatal: This operation must be run in a work tree
diff --raw --no-abbrev -z HEAD~: command returned error: 128

core.worktree is relative to the .git directory but the logic
in find_worktree() does not account for it.

Use `git rev-parse --show-toplevel` to find the worktree so that
the dir-diff feature works inside a submodule.

Reported-by: Gábor Lipták <gabor.liptak@gmail.com>
Helped-by: Jens Lehmann <jens.lehmann@web.de>
Helped-by: John Keeping <john@keeping.me.uk>
Signed-off-by: David Aguilar <davvid@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
No differences found