git-submodule: work with GIT_DIR/GIT_WORK_TREE
commitbe8779f7ac9a3be9aa783df008d59082f4054f67
authorDaniel Graña <dangra@gmail.com>
Sun, 22 Jul 2012 14:49:44 +0000 (22 11:49 -0300)
committerJunio C Hamano <gitster@pobox.com>
Wed, 25 Jul 2012 18:33:24 +0000 (25 11:33 -0700)
tree23b02db59f5ccd933b14a839d47155022b7c0a8c
parent476109fa4c261c57cf20858b1879d5fede32e32c
git-submodule: work with GIT_DIR/GIT_WORK_TREE

The combination of GIT_DIR and GIT_WORK_TREE can be used to manage
files in one directory hierarchy while keeping the repository that
keeps track of them outside the directory hierarchy.  For example:

    git init --bare /path/to/there
    alias dotfiles="GIT_DIR=/path/to/there GIT_WORK_TREE=/path/to/here git"

    cd /path/to/here
    dotfiles add file
    dotfiles commit -a -m "add /path/to/here/file"
    ...

lets you manage files under /path/to/here/ in the repository located
at /path/to/there.

git-submodule however fails to add submodules, as it is confused by
GIT_DIR and GIT_WORK_TREE environment variables when it tries to
work in the submodule, like so:

    dotfiles submodule add http://path.to/submodule
    fatal: working tree '/path/to/here' already exists.

Simply unsetting the environment where the command works on the
submodule is sufficient to fix this, as it has set things up so
that GIT_DIR and GIT_WORK_TREE do not even have to point at the
repository and the working tree of the submodule.

Signed-off-by: Daniel Graña <dangra@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-submodule.sh
t/t7409-submodule-detached-worktree.sh [new file with mode: 0644]