diff options
author | Daniel Graña <dangra@gmail.com> | 2012-07-22 11:49:44 -0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-07-25 11:33:24 -0700 |
commit | be8779f7ac9a3be9aa783df008d59082f4054f67 (patch) | |
tree | 23b02db59f5ccd933b14a839d47155022b7c0a8c /git-submodule.sh | |
parent | 476109fa4c261c57cf20858b1879d5fede32e32c (diff) | |
download | git-be8779f7ac9a3be9aa783df008d59082f4054f67.tar.gz |
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>
Diffstat (limited to 'git-submodule.sh')
-rwxr-xr-x | git-submodule.sh | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/git-submodule.sh b/git-submodule.sh index dba4d39e1f..9210f3af56 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -181,8 +181,11 @@ module_clone() rm -f "$gitdir/index" else mkdir -p "$gitdir_base" - git clone $quiet -n ${reference:+"$reference"} \ - --separate-git-dir "$gitdir" "$url" "$sm_path" || + ( + clear_local_git_env + git clone $quiet -n ${reference:+"$reference"} \ + --separate-git-dir "$gitdir" "$url" "$sm_path" + ) || die "$(eval_gettext "Clone of '\$url' into submodule path '\$sm_path' failed")" fi |