Merge branch 'dg/submodule-in-dismembered-working-tree'
In a superproject that has repository outside of its working tree, "git submodule add" failed to clone a new submodule, as GIT_DIR and GIT_WORK_TREE environment variables necessary to work in such a superproject interfered with access to the submodule repository. * dg/submodule-in-dismembered-working-tree: git-submodule: work with GIT_DIR/GIT_WORK_TREE
This commit is contained in:
commit
a64fe6c1d5
@ -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
|
||||
|
||||
|
61
t/t7409-submodule-detached-worktree.sh
Normal file
61
t/t7409-submodule-detached-worktree.sh
Normal file
@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2012 Daniel Graña
|
||||
#
|
||||
|
||||
test_description='Test submodules on detached working tree
|
||||
|
||||
This test verifies that "git submodule" initialization, update and addition works
|
||||
on detahced working trees
|
||||
'
|
||||
|
||||
TEST_NO_CREATE_REPO=1
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'submodule on detached working tree' '
|
||||
git init --bare remote &&
|
||||
test_create_repo bundle1 &&
|
||||
(cd bundle1 && test_commit "shoot") &&
|
||||
mkdir home &&
|
||||
(
|
||||
cd home &&
|
||||
export GIT_WORK_TREE="$(pwd)" GIT_DIR="$(pwd)/.dotfiles" &&
|
||||
git clone --bare ../remote .dotfiles &&
|
||||
git submodule add ../bundle1 .vim/bundle/sogood &&
|
||||
test_commit "sogood" &&
|
||||
git push origin master
|
||||
) &&
|
||||
mkdir home2 &&
|
||||
(
|
||||
cd home2 &&
|
||||
export GIT_WORK_TREE="$(pwd)" GIT_DIR="$(pwd)/.dotfiles" &&
|
||||
git clone --bare ../remote .dotfiles &&
|
||||
git submodule update --init
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'submodule on detached working pointed by core.worktree' '
|
||||
mkdir home3 &&
|
||||
(
|
||||
cd home3 &&
|
||||
export GIT_DIR="$(pwd)/.dotfiles" &&
|
||||
git clone --bare ../remote "$GIT_DIR" &&
|
||||
git config core.bare false &&
|
||||
git config core.worktree .. &&
|
||||
git submodule add ../bundle1 .vim/bundle/dupe &&
|
||||
test_commit "dupe" &&
|
||||
git push origin master
|
||||
) &&
|
||||
(
|
||||
cd home &&
|
||||
export GIT_DIR="$(pwd)/.dotfiles" &&
|
||||
git config core.bare false &&
|
||||
git config core.worktree .. &&
|
||||
git pull &&
|
||||
git submodule update &&
|
||||
git submodule status &&
|
||||
test -d .vim/bundle/dupe
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
Loading…
Reference in New Issue
Block a user