aboutsummaryrefslogtreecommitdiff
path: root/git-submodule.sh
diff options
context:
space:
mode:
authorJens Lehmann <Jens.Lehmann@web.de>2010-07-17 17:11:43 +0200
committerJunio C Hamano <gitster@pobox.com>2010-07-19 11:10:43 -0700
commitd27b876b284b8fb82db971bc7cea8c9782614ab2 (patch)
tree7b6b25de2e21825d8b728813c5bed0dee83c3542 /git-submodule.sh
parent8fbe9b32ce6f5e12ba3f8b9d4e3ccb0b8acf529f (diff)
downloadgit-d27b876b284b8fb82db971bc7cea8c9782614ab2.tar.gz
git-d27b876b284b8fb82db971bc7cea8c9782614ab2.tar.xz
git submodule add: Require the new --force option to add ignored paths
To make the behavior of "git submodule add" more consistent with "git add" ignored submodule paths should not be silently added when they match an entry in a .gitignore file. To be able to override that default behavior in the same way as we can do that for "git add", the new option "--force" is introduced. Signed-off-by: Jens Lehmann <Jens.Lehmann@web.de> Acked-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-submodule.sh')
-rwxr-xr-xgit-submodule.sh16
1 files changed, 14 insertions, 2 deletions
diff --git a/git-submodule.sh b/git-submodule.sh
index ad2417d1b..170186f49 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -5,7 +5,7 @@
# Copyright (c) 2007 Lars Hjemli
dashless=$(basename "$0" | sed -e 's/-/ /')
-USAGE="[--quiet] add [-b branch] [--reference <repository>] [--] <repository> [<path>]
+USAGE="[--quiet] add [-b branch] [-f|--force] [--reference <repository>] [--] <repository> [<path>]
or: $dashless [--quiet] status [--cached] [--recursive] [--] [<path>...]
or: $dashless [--quiet] init [--] [<path>...]
or: $dashless [--quiet] update [--init] [-N|--no-fetch] [--rebase] [--reference <repository>] [--merge] [--recursive] [--] [<path>...]
@@ -19,6 +19,7 @@ require_work_tree
command=
branch=
+force=
reference=
cached=
recursive=
@@ -133,6 +134,9 @@ cmd_add()
branch=$2
shift
;;
+ -f | --force)
+ force=$1
+ ;;
-q|--quiet)
GIT_QUIET=1
;;
@@ -201,6 +205,14 @@ cmd_add()
git ls-files --error-unmatch "$path" > /dev/null 2>&1 &&
die "'$path' already exists in the index"
+ if test -z "$force" && ! git add --dry-run --ignore-missing "$path" > /dev/null 2>&1
+ then
+ echo >&2 "The following path is ignored by one of your .gitignore files:" &&
+ echo >&2 $path &&
+ echo >&2 "Use -f if you really want to add it."
+ exit 1
+ fi
+
# perhaps the path exists and is already a git repo, else clone it
if test -e "$path"
then
@@ -234,7 +246,7 @@ cmd_add()
) || die "Unable to checkout submodule '$path'"
fi
- git add --force "$path" ||
+ git add $force "$path" ||
die "Failed to add submodule '$path'"
git config -f .gitmodules submodule."$path".path "$path" &&