diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-07-15 12:06:25 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-07-15 12:06:25 -0700 |
commit | 849865733fc667789d0e57edd1ac2ee1f38499a3 (patch) | |
tree | f2507a5c015a48669914438e6c92e37850a336d9 | |
parent | aa57328d60f5d5a5f74d1d336caf06b6bdf4fd03 (diff) | |
parent | 31991b0260216d16f2e447e68bcabd9d9cce26ba (diff) | |
download | git-849865733fc667789d0e57edd1ac2ee1f38499a3.tar.gz git-849865733fc667789d0e57edd1ac2ee1f38499a3.tar.xz |
Merge branch 'ab/submodule-add-f'
* ab/submodule-add-f:
git submodule: add submodules with git add -f <path>
-rw-r--r-- | Documentation/git-submodule.txt | 4 | ||||
-rwxr-xr-x | git-submodule.sh | 4 | ||||
-rwxr-xr-x | t/t7400-submodule-basic.sh | 24 |
3 files changed, 29 insertions, 3 deletions
diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index cdabfd29a..76a832a3a 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -95,6 +95,10 @@ is the superproject and submodule repositories will be kept together in the same relative location, and only the superproject's URL needs to be provided: git-submodule will correctly 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:: Show the status of the submodules. This will print the SHA-1 of the diff --git a/git-submodule.sh b/git-submodule.sh index d9950c2b7..ad2417d1b 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -234,12 +234,12 @@ cmd_add() ) || die "Unable to checkout submodule '$path'" fi - git add "$path" || + git add --force "$path" || die "Failed to add submodule '$path'" git config -f .gitmodules submodule."$path".path "$path" && git config -f .gitmodules submodule."$path".url "$repo" && - git add .gitmodules || + git add --force .gitmodules || die "Failed to register submodule '$path'" } diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index 97ff074da..d9f278599 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh @@ -42,7 +42,8 @@ test_expect_success 'setup - hide init subdirectory' ' ' 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. @@ -85,6 +86,27 @@ test_expect_success 'submodule add' ' 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' ' echo "refs/heads/initial" >expect-head && cat <<-\EOF >expect-heads && |