Merge branch 'ab/submodule-add-f'

* ab/submodule-add-f:
  git submodule: add submodules with git add -f <path>
This commit is contained in:
Junio C Hamano 2010-07-15 12:06:25 -07:00
commit 849865733f
3 changed files with 29 additions and 3 deletions

View File

@ -95,6 +95,10 @@ is the superproject and submodule repositories will be kept
together in the same relative location, and only the together in the same relative location, and only the
superproject's URL needs to be provided: git-submodule will correctly superproject's URL needs to be provided: git-submodule will correctly
locate the submodule using the relative URL in .gitmodules. locate the submodule using the relative URL in .gitmodules.
+
The submodule will be added with "git add --force <path>". I.e. git
doesn't care if the new path is in a `gitignore`. Your invocation of
"git submodule add" is considered enough to override it.
status:: status::
Show the status of the submodules. This will print the SHA-1 of the Show the status of the submodules. This will print the SHA-1 of the

View File

@ -234,12 +234,12 @@ cmd_add()
) || die "Unable to checkout submodule '$path'" ) || die "Unable to checkout submodule '$path'"
fi fi
git add "$path" || git add --force "$path" ||
die "Failed to add submodule '$path'" die "Failed to add submodule '$path'"
git config -f .gitmodules submodule."$path".path "$path" && git config -f .gitmodules submodule."$path".path "$path" &&
git config -f .gitmodules submodule."$path".url "$repo" && git config -f .gitmodules submodule."$path".url "$repo" &&
git add .gitmodules || git add --force .gitmodules ||
die "Failed to register submodule '$path'" die "Failed to register submodule '$path'"
} }

View File

@ -42,7 +42,8 @@ test_expect_success 'setup - hide init subdirectory' '
' '
test_expect_success 'setup - repository to add submodules to' ' test_expect_success 'setup - repository to add submodules to' '
git init addtest git init addtest &&
git init addtest-ignore
' '
# The 'submodule add' tests need some repository to add as a submodule. # The 'submodule add' tests need some repository to add as a submodule.
@ -85,6 +86,27 @@ test_expect_success 'submodule add' '
test_cmp empty untracked test_cmp empty untracked
' '
test_expect_success 'submodule add to .gitignored path' '
echo "refs/heads/master" >expect &&
>empty &&
(
cd addtest-ignore &&
# Does not use test_commit due to the ignore
echo "*" > .gitignore &&
git add --force .gitignore &&
git commit -m"Ignore everything" &&
git submodule add "$submodurl" submod &&
git submodule init
) &&
rm -f heads head untracked &&
inspect addtest/submod ../.. &&
test_cmp expect heads &&
test_cmp expect head &&
test_cmp empty untracked
'
test_expect_success 'submodule add --branch' ' test_expect_success 'submodule add --branch' '
echo "refs/heads/initial" >expect-head && echo "refs/heads/initial" >expect-head &&
cat <<-\EOF >expect-heads && cat <<-\EOF >expect-heads &&